- 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

In this article, we will explain the way to remove every k-th node of the linked list. We must delete every node that sits on the multiple of k, i.e., we have to delete the node on positions k, 2*k, 3*k, etc.

Input : 112->231->31->41->54->63->71->85 k = 3 Output : 112->231->41->54->71->85 Explanation: As 3 is the k-th node after its deletion list would be : First iteration :112->231->41->54->63->71->85 Now we count from 41 the next kth node is 63 After the second iteration our list will become : 112->231->41->54->71->85 And our iteration continues like this. Input: 14->21->23->54->56->61 k = 1 Output: Empty list Explanation: All nodes need to be deleted

In this problem, we will apply a normal approach that is efficient enough so that we don’t require to optimize it.

In this problem, we are going to traverse the linked list with a counter. If the counter hits k, we delete that node and refresh the counter to find the next element in the kth position from the current node.

#include<bits/stdc++.h> using namespace std; /* Linked list Node */ struct Node { int data; struct Node* next; }; void push(struct Node** ref, int new_data) { // pushing the data into the list struct Node* new_n = new Node; new_n->data = new_data; new_n->next = (*ref); (*ref) = new_n; } void deletek(Node* prev, Node* curr) { // delete function if(prev == NULL) { prev = curr; curr = curr -> next; free(prev); prev = NULL; } else { prev -> next = curr -> next; auto tmp = curr; free(tmp); // freeing the space } } /* Function to print linked list */ void displayList(struct Node *head) { struct Node *temp = head; while (temp != NULL) { cout<<temp->data<<" "; temp = temp->next; } } // Function to create a new node. struct Node *newNode(int x) { Node *temp = new Node; temp->data = x; temp->next = NULL; return temp; } int main() { struct Node* head = NULL; push(&head, 80); push(&head, 70); push(&head, 60); push(&head, 50); push(&head, 40); push(&head, 30); push(&head, 20); int k = 3; // given k Node* curr = head; // current pointer Node* prev = NULL; // previous pointer int count = 1; // position counter if(head == NULL || k == 0) // if list is already empty or k = 0 cout << "Invalid\n"; else { while(curr) { // traversing the list if(count == k) { deletek(prev, curr); curr = prev -> next; count = 1; } else { count++; prev = curr; curr = curr -> next; } } displayList(head); // printing the new list } return 0; }

20 30 50 60 80

The above approach has a time complexity of **O(N)**, where N is the size of our given linked list.

In the above approach, we keep three things in hand first, the current pointer, second the previous pointer, and third the position counter. Now we delete some node when our position counter becomes equal to know we call the function to delete with a previous and current counter as parameters now we delete the current node and free up space now when the delete function is done now we shift current pointer to the next element and refresh our counter to 1 and loop this block till our current becomes NULL.

In this article, we solve a problem to Remove every k-th node of the linked list. We also learned the C++ program for this problem and the complete approach ( Normal) by which we solved this problem. We can write the same program in other languages such as C, java, python, and other languages. We hope you find this article helpful.

- Related Questions & Answers
- Program to find the K-th last node of a linked list in Python
- Find the fractional (or n/k – th) node in linked list in C++
- Remove First Node of the Linked List using C++
- Remove Last Node of the Linked List using C++
- C# Program to remove a node at the end of the Linked List
- C# Program to remove a node at the beginning of a Linked List
- Golang Program to delete the node after the Kth node (K is not in the linked list).
- Program for n’th node from the end of a Linked List in C program
- C# program to remove the first occurrence of a node in a Linked List
- Golang program to insert a new node after the Kth node (K is not in the linked list)
- Golang Program to update the node value after the Kth node (When K is not in the linked list).
- Linked List Random Node in C++
- Finding middlemost node of a linked list in JavaScript
- Product of every K’th prime number in an array in C++
- Remove Nth Node From End of List in Python

Advertisements