Remove every k'th node Java
- Get link
- X
- Other Apps
PROGRAM TO REMOVE EVERY K-TH NODE OF THE LINKED LIST
// Java program to delete every k-th Node // of a singly linked list. class MAIN { /* 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); } }
OUTPUT
1 2 4 5 7 8
- Get link
- X
- Other Apps
Comments
Post a Comment