Remove duplicates from unsorted linked list in java
Java program for Remove duplicates from unsorted linked list. Here problem description and explanation.
// Java Program to
// Delete duplicate nodes in unsorted linked list
class LinkNode
{
public int data;
public LinkNode next;
public LinkNode(int data)
{
this.data = data;
this.next = null;
}
}
public class LinkedList
{
public LinkNode head;
public LinkNode tail;
// Class constructors
public LinkedList()
{
this.head = null;
this.tail = null;
}
// Insert new element at end position
public void insert(int value)
{
// Create new node
LinkNode node = new LinkNode(value);
if (this.head == null)
{
// Add first node
this.head = node;
}
else
{
// Add new node at the last position
this.tail.next = node;
}
// Make new tail
this.tail = node;
}
// Display all node value
public void display()
{
if (this.head != null)
{
System.out.print("Linked List Element :");
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");
}
}
public void removeNode()
{
if (this.head == null)
{
// When linked list empty
System.out.print("Empty Linked list");
}
else
{
// Auxiliary variable
LinkNode temp = this.head;
LinkNode hold = null;
LinkNode initial = null;
LinkNode current = null;
// Outer loop
while (temp != null)
{
current = temp;
initial = current.next;
// Inner loop
// Remove all node which value is similar to temp node
while (initial != null)
{
if (temp.data == initial.data)
{
// Get remove node
hold = initial;
}
else
{
current = initial;
}
// Visit to next node
initial = initial.next;
if (hold != null)
{
current.next = initial;
// remove node
hold = null;
}
}
// Visit to next node
temp = temp.next;
}
// New last node
this.tail = current;
}
}
public static void main(String[] args)
{
// new linked list
LinkedList task = new LinkedList();
// Add tested element
task.insert(1);
task.insert(2);
task.insert(9);
task.insert(4);
task.insert(9);
task.insert(3);
task.insert(1);
task.insert(7);
task.insert(2);
task.insert(1);
System.out.println("\nBefore Delete ");
task.display();
task.removeNode();
System.out.println("\nAfter Delete ");
task.display();
}
}

Output
Before Delete
Linked List Element : 1 2 9 4 9 3 1 7 2 1
After Delete
Linked List Element : 1 2 9 4 3 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