Java Program For Removing Every K-th Node Of The Linked List Last Updated : 10 Jan, 2022 Comments Improve Suggest changes Like Article Like 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 Recommended: Please solve it on "PRACTICE" first, before moving on to the solution. 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. Java // Java program to delete every k-th // Node of a singly linked list. class GFG{ // Linked list Node static class Node { int data; Node next; } // To remove complete list (Needed // for case when k is 1) static Node freeList(Node node) { while (node != null) { Node next = node.next; node = next; } return node; } // Deletes every k-th node and // returns head of modified list. static Node deleteKthNode(Node head, int 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. Node ptr = head, prev = null; // Traverse list and delete // every k-th node int 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 static void displayList(Node head) { Node temp = head; while (temp != null) { System.out.print(temp.data + " "); temp = temp.next; } } // Utility function to create a // new node. static Node newNode(int x) { Node temp = new Node(); temp.data = x; temp.next = null; return temp; } // Driver Code public static void main(String args[]) { // Start with the empty list Node 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); int k = 3; head = deleteKthNode(head, k); displayList(head); } } // This code is contributed by Arnab Kundu 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! Comment More infoAdvertise with us Next Article Java Program For Removing Every K-th Node Of The Linked List kartik Follow Improve Article Tags : Linked List Java Programs DSA Microsoft Amazon +1 More Practice Tags : AmazonMicrosoftLinked List Similar Reads Java Program For Rotating A Linked List Given a singly linked list, rotate the linked list counter-clockwise by k nodes. Where k is a given positive integer. For example, if the given linked list is 10->20->30->40->50->60 and k is 4, the list should be modified to 50->60->10->20->30->40. Assume that k is smal 6 min read Java Program For Removing Middle Points From a Linked List Of Line Segments Given a linked list of coordinates where adjacent points either form a vertical line or a horizontal line. Delete points from the linked list which are in the middle of a horizontal or vertical line.Examples: Input: (0,10)->(1,10)->(5,10)->(7,10) | (7,5)->(20,5)->(40,5) Output: Linked 4 min read Java Program For Removing Duplicates From A Sorted Linked List Write a function that takes a list sorted in non-decreasing order and deletes any duplicate nodes from the list. The list should only be traversed once. For example if the linked list is 11->11->11->21->43->43->60 then removeDuplicates() should convert the list to 11->21->43- 8 min read Java Program for Clockwise rotation of Linked List Given a singly linked list and an integer K, the task is to rotate the linked list clockwise to the right by K places.Examples: Input: 1 -> 2 -> 3 -> 4 -> 5 -> NULL, K = 2 Output: 4 -> 5 -> 1 -> 2 -> 3 -> NULLInput: 7 -> 9 -> 11 -> 13 -> 3 -> 5 -> NULL 4 min read Java Program for Reverse a linked list Given a pointer to the head node of a linked list, the task is to reverse the linked list. We need to reverse the list by changing links between nodes. Examples: Input: Head of following linked list 1->2->3->4->NULLOutput: Linked list should be changed to, 4->3->2->1->NULL In 3 min read Java Program to Delete a Node From the Middle of the Circular Linked List In this article, we are going to learn to delete the middle node from the circular Linked List in java. The approach we are going to follow for this program is, first we calculate the number of nodes in the list and then divide the number of nodes by 2 to get the middle node of the list. Algorithm C 4 min read Java Program to Delete a Node From the Ending of the Circular Linked List In this article, we will learn about deleting a node from the ending of a circular linked list. Consider the linked list as shown below: Example:Input : 5->3->4->(head node)Output: 5->3->(head node)We will first initialize the list and add some data into it with the addNode() method a 3 min read Java Program For Removing All Occurrences Of Duplicates From A Sorted Linked List Given a sorted linked list, delete all nodes that have duplicate numbers (all occurrences), leaving only numbers that appear once in the original list. Examples: Input: 23->28->28->35->49->49->53->53 Output: 23->35 Input: 11->11->11->11->75->75 Output: empty List Note that this is different from Rem 3 min read Java Program To Delete Middle Of Linked List Given a singly linked list, delete the middle of the linked list. For example, if the given linked list is 1->2->3->4->5 then the linked list should be modified to 1->2->4->5 If there are even nodes, then there would be two middle nodes, we need to delete the second middle element. For example, if g 4 min read Java Program For Removing Duplicates From An Unsorted Linked List Given an unsorted Linked List, the task is to remove duplicates from the list. Examples: Input: linked_list = 12 -> 11 -> 12 -> 21 -> 41 -> 43 -> 21 Output: 12 -> 11 -> 21 -> 41 -> 43 Explanation: Second occurrence of 12 and 21 are removed. Input: linked_list = 12 -> 6 min read Like