

- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to delete n nodes after m nodes from a linked list in Python
Suppose we are given a linked list that has the start node as "head", and two integer numbers m and n. We have to traverse the list and delete some nodes such as the first m nodes are kept in the list and the next n nodes after the first m nodes are deleted. We perform this until we encounter the end of the linked list. We start from the head node, and the modified linked list is to be returned.
The linked list structure is given to us as −
Node value : <integer> next : <pointer to next node>
So, if the input is like elements = [1, 2, 3, 4, 5, 6, 7, 8], m = 3, n = 1, then the output will be [1, 2, 3, 5, 6, 7, ]
Every node after 3 nodes is deleted in this process, so in the end the linked list will look like below −
To solve this, we will follow these steps −
prev := head
curr := head
q := 0
p := 0
while curr is not null, do
q := q + 1
if q is same as m, then
for i in range 0 to n, do
if curr.next is not null, then
curr := next of curr
next of prev := next of curr
q := 0
prev := next of prev
curr := next of curr
return head
Example (Python)
Let us see the following implementation to get a better understanding −
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def make_list(elements): head = ListNode(elements[0]) for element in elements[1:]: ptr = head while ptr.next: ptr = ptr.next ptr.next = ListNode(element) return head def print_list(head): ptr = head print('[', end = "") while ptr: print(ptr.val, end = ", ") ptr = ptr.next print(']') def solve(head, m, n): prev = curr = head q = 0 p = 0 while curr: q += 1 if q == m: for i in range(n): if curr.next is not None: curr = curr.next prev.next = curr.next q = 0 prev = prev.next curr = curr.next return head head = ListNode() elements = [1, 2, 3, 4, 5, 6, 7, 8] head = make_list(elements) res = solve(head, 3, 1) print_list(res)
Input
[1, 2, 3, 4, 5, 6, 7, 8], 3, 1
Output
[1, 2, 3, 5, 6, 7,]
- Related Questions & Answers
- Delete N nodes after M nodes of a linked list in C++ program
- Delete N nodes after M nodes of a linked list in C++?
- Python program to rotate doubly linked list by N nodes
- Delete all Prime Nodes from a Doubly Linked List in C++
- Delete all Prime Nodes from a Singly Linked List in C++
- Delete alternate nodes of a Linked List in C++
- Python program to create a doubly linked list of n nodes and count the number of nodes
- Python program to create a Circular Linked List of N nodes and count the number of nodes
- Delete all Non-Prime Nodes from a Singly Linked List in C++
- Delete all the even nodes from a Doubly Linked List in C++
- Program to swap nodes in a linked list in Python
- Program to reverse inner nodes of a linked list in python
- Program to convert linked list by alternating nodes from front and back in Python
- Python Program to Display all the Nodes in a Linked List using Recursion
- Python Program to Print the Alternate Nodes in a Linked List using Recursion