Open In App

Javascript Program For Removing Every K-th Node Of The Linked List

Improve
Improve
Like Article
Like
Save
Share
Report

Given a singly linked list, Your task is to remove every K-th node of the linked list. Assume that K is always less than or equal to length of Linked List.
Examples :

Input: 1->2->3->4->5->6->7->8  
        k = 3
Output: 1->2->4->5->7->8
As 3 is the k-th node after its deletion list 
would be 1->2->4->5->6->7->8
And now 4 is the starting node then from it, 6 
would be the k-th node. So no other kth node 
could be there.So, final list is:
1->2->4->5->7->8.

Input: 1->2->3->4->5->6  
       k = 1
Output: Empty list 
All nodes need to be deleted

The idea is to traverse the list from the beginning and keep track of nodes visited after the last deletion. Whenever count becomes k, delete the current node and reset the count as 0.

Traverse list and do following
   (a) Count node before deletion.
   (b) If (count == k) that means current 
        node is to be deleted.
      (i)  Delete current node i.e. do

          //  assign address of next node of 
          // current node to the previous node
          // of the current node.
          prev->next = ptr->next i.e.

       (ii) Reset count as 0, i.e., do count = 0.
   (c) Update prev node if count != 0 and if
       count is 0 that means that node is a
       starting point.
   (d) Update ptr and continue until all 
       k-th node gets deleted.

Below is the implementation. 

Javascript




<script>
// Javascript program to delete every 
// k-th Node of a singly linked list.
// Linked list Node 
class Node 
{
    constructor() 
    {
        this.data = 0;
        this.next = null;
    }
}
  
// To remove complete list (Needed 
// for case when k is 1)
function freeList( node) 
{
    while (node != null
    {
        next = node.next;
        node = next;
    }
    return node;
}
  
// Deletes every k-th node and
// returns head of modified list.
function deleteKthNode(head, k) 
{
    // If linked list is empty
    if (head == null)
        return null;
  
    if (k == 1) 
    {
        head = freeList(head);
        return null;
    }
  
    // Initialize ptr and prev before
    // starting traversal.
    var ptr = head, prev = null;
  
    // Traverse list and delete
    // every k-th node
    var count = 0;
    while (ptr != null
    {
        // Increment Node count
        count++;
  
        // Check if count is equal to k
        // if yes, then delete current Node
        if (k == count) 
        {
            // Put the next of current Node 
            // in the next of previous Node
            prev.next = ptr.next;
  
            // Set count = 0 to reach further
            // k-th Node
            count = 0;
        }
  
        // Update prev if count is not 0
        if (count != 0)
            prev = ptr;
  
        ptr = prev.next;
    }
    return head;
}
  
// Function to print linked list 
function displayList( head) 
{
    temp = head;
    while (temp != null
    {
        document.write(temp.data + 
                       " ");
        temp = temp.next;
    }
}
  
// Utility function to create a 
// new node.
function newNode(x) 
{
    temp = new Node();
    temp.data = x;
    temp.next = null;
    return temp;
}
  
// Driver Code
// Start with the empty list 
head = newNode(1);
head.next = newNode(2);
head.next.next = newNode(3);
head.next.next.next = newNode(4);
head.next.next.next.next = 
newNode(5);
head.next.next.next.next.next = 
newNode(6);
head.next.next.next.next.next.next = 
newNode(7);
head.next.next.next.next.next.next.next = 
newNode(8);
  
var k = 3;
head = deleteKthNode(head, k);
displayList(head);
// This code is contributed by umadevi9616
</script>


Output:  

1 2 4 5 7 8

Time Complexity: O(n)

Please refer complete article on Remove every k-th node of the linked list for more details!



Last Updated : 13 Jan, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads