Remove every k th node of the linked list in java

Java program for Remove every k th node of the linked list. Here problem description and explanation.

// Java Program for
// delete every k-th node of the linked list

// Linked list node
class LinkNode
{
    public int data;
    public LinkNode next;
    public LinkNode(int data)
    {
        this.data = data;
        this.next = null;
    }
}
public class SingleLL
{
    public LinkNode head;
    public SingleLL()
    {
        this.head = null;
    }
    // Add new node at the end of linked list
    public void addNode(int value)
    {
        // Create  node
        LinkNode node = new LinkNode(value);
        if (this.head == null)
        {
            this.head = node;
        }
        else
        {
            LinkNode temp = this.head;
            // Find last node
            while (temp.next != null)
            {
                // Visit to next node
                temp = temp.next;
            }
            // Add node at last position
            temp.next = node;
        }
    }
    // Display all Linked List elements
    public void display()
    {
        if (this.head != null)
        {
            LinkNode temp = this.head;
            while (temp != null)
            {
                // Display node value
                System.out.print("  " + temp.data);
                // Visit to next node
                temp = temp.next;
            }
        }
        else
        {
            System.out.println("Empty Linked list\n");
        }
    }
    public void removeKh(int kth)
    {
        if (this.head == null)
        {
            // When no element
            System.out.println("Empty Linked list");
        }
        else if (kth <= 0)
        {
            System.out.println("\nInvalid position " + kth);
        }
        else
        {
            LinkNode temp = this.head;
            LinkNode hold = null;
            LinkNode checker = null;
            int count = 0;
            if (kth == 1)
            {
                // When delete all element
                this.head = null;
            }
            while (temp != null)
            {
                count++;
                if (count % kth == 0)
                {
                    // When delete node found
                    hold = temp;
                }
                else
                {
                    // Get current node
                    checker = temp;
                }
                temp = temp.next;
                // When get free node
                if (hold != null)
                {
                    if (checker != null)
                    {
                        // Unlink node
                        checker.next = hold.next;
                    }
                    hold = null;
                }
            }
        }
    }
    public static void main(String[] args)
    {
        SingleLL sll = new SingleLL();
        // Linked list
        // 1 → 2 → 3 → 4 → 5 → 6 → 7 → NULL
        sll.addNode(1);
        sll.addNode(2);
        sll.addNode(3);
        sll.addNode(4);
        sll.addNode(5);
        sll.addNode(6);
        sll.addNode(7);
        int position = 2;
        System.out.println("Position : " + position);
        System.out.println("Before Delete Linked List");
        sll.display();
        sll.removeKh(position);
        System.out.println("\n After Linked List");
        sll.display();
    }
}
delete every kth node in linked list

Output

Position : 2
Before Delete Linked List
  1  2  3  4  5  6  7
 After Linked List
  1  3  5  7


Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment







© 2021, kalkicode.com, All rights reserved