# Javascript Program To Delete N Nodes After M Nodes Of A Linked List

Given a linked list and two integers M and N. Traverse the linked list such that you retain M nodes then delete next N nodes, continue the same till end of the linked list.

Difficulty Level: Rookie **Examples:**

Input:M = 2, N = 2Linked List:1->2->3->4->5->6->7->8Output:Linked List:1->2->5->6Input:M = 3, N = 2Linked List:1->2->3->4->5->6->7->8->9->10Output:Linked List:1->2->3->6->7->8Input:M = 1, N = 1Linked List:1->2->3->4->5->6->7->8->9->10Output:Linked List:1->3->5->7->9

The main part of the problem is to maintain proper links between nodes, make sure that all corner cases are handled. Following is C implementation of function skipMdeleteN() that skips M nodes and delete N nodes till end of list. It is assumed that M cannot be 0.

## Javascript

`<script>` `// Javascript program to delete N nodes` `// after M nodes of a linked list` `// A linked list node` `class Node` `{` ` ` `constructor()` ` ` `{` ` ` `this` `.data = 0;` ` ` `this` `.next = ` `null` `;` ` ` `}` `}` `// Function to insert a node at` `// the beginning` `function` `push(head_ref, new_data)` `{` ` ` `// Allocate node` ` ` `var` `new_node = ` `new` `Node();` ` ` `// Put in the data` ` ` `new_node.data = new_data;` ` ` `// Link the old list off the` ` ` `// new node` ` ` `new_node.next = (head_ref);` ` ` `// Move the head to point to` ` ` `// the new node` ` ` `(head_ref) = new_node;` ` ` `return` `head_ref;` `}` `// Function to print linked list` `function` `printList(head)` `{` ` ` `var` `temp = head;` ` ` `while` `(temp != ` `null` `)` ` ` `{` ` ` `document.write(temp.data + ` `" "` `);` ` ` `temp = temp.next;` ` ` `}` ` ` `document.write(` `"<br/>"` `);` `}` `// Function to skip M nodes and then` `// delete N nodes of the linked list.` `function` `skipMdeleteN(head, M , N)` `{` ` ` `var` `curr = head, t;` ` ` `var` `count;` ` ` `// The main loop that traverses` ` ` `// through the whole list` ` ` `while` `(curr != ` `null` `)` ` ` `{` ` ` `// Skip M nodes` ` ` `for` `(count = 1; count < M &&` ` ` `curr != ` `null` `; count++)` ` ` `curr = curr.next;` ` ` `// If we reached end of list,` ` ` `// then return` ` ` `if` `(curr == ` `null` `)` ` ` `return` `;` ` ` `// Start from next node and delete` ` ` `// N nodes` ` ` `t = curr.next;` ` ` `for` `(count = 1; count <= N &&` ` ` `t != ` `null` `; count++)` ` ` `{` ` ` `var` `temp = t;` ` ` `t.next;` ` ` `}` ` ` `// Link the previous list with` ` ` `// remaining nodes` ` ` `curr.next = t;` ` ` `// Set current pointer for next` ` ` `// iteration` ` ` `curr = t;` ` ` `}` `}` `// Driver code` `/* Create following linked list` ` ` `1.2.3.4.5.6.7.8.9.10 */` `var` `head = ` `null` `;` `var` `M = 2, N = 3;` `head = push(head, 10);` `head = push(head, 9);` `head = push(head, 8);` `head = push(head, 7);` `head = push(head, 6);` `head = push(head, 5);` `head = push(head, 4);` `head = push(head, 3);` `head = push(head, 2);` `head = push(head, 1);` `document.write(` `"M = "` `+M+` `", N = "` `+ N +` `"<br/>Given Linked list is :<br/>"` `);` `printList(head);` `skipMdeleteN(head, M, N);` `document.write(` `"<br/>Linked list after deletion is :<br/>"` `);` `printList(head);` `// This code is contributed by gauravrajput1` `</script>` |

**Output: **

M = 2, N = 3 Given Linked list is : 1 2 3 4 5 6 7 8 9 10 Linked list after deletion is : 1 2 6 7

**Time Complexity:**

O(n) where n is number of nodes in linked list.

**Auxiliary Space**: O(1)

Please refer complete article on Delete N nodes after M nodes of a linked list for more details!