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();
}
}

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