Delete duplicate nodes from sorted linked list in c#
Csharp program for Delete duplicate nodes from sorted linked list. Here problem description and explanation.
// Include namespace system
using System;
/*
Csharp program for
Delete duplicate nodes in sorted linked list
*/
// Linked list node
public 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 LinkNode tail;
public SingleLL()
{
this.head = null;
this.tail = null;
}
// Add new node at the end of linked list
public void addNode(int value)
{
// Create a new node
var node = new LinkNode(value);
if (this.head == null)
{
this.head = node;
}
else
{
this.tail.next = node;
}
this.tail = node;
}
// Display linked list element
public void display()
{
if (this.head == null)
{
return;
}
var temp = this.head;
// iterating linked list elements
while (temp != null)
{
Console.Write(temp.data.ToString() + " → ");
// Visit to next node
temp = temp.next;
}
Console.WriteLine(" NULL");
}
// Remove the duplicate nodes from
// sorted singly linked list
public void deleteDuplicate()
{
if (this.head == null)
{
return;
}
else
{
// Auxiliary variables
var temp = this.head.next;
var current = this.head;
LinkNode hold = null;
// Find and remove duplicate
while (temp != null)
{
// Check duplicate node
if (current.data == temp.data)
{
// When node key are same
hold = temp;
}
else
{
// When node key are not same
current = temp;
}
// Visit to next node
temp = temp.next;
if (hold != null)
{
// Modified link value
current.next = temp;
hold = null;
}
else
{
// Change last node
this.tail = current;
}
}
}
}
public static void Main(String[] args)
{
var sll = new SingleLL();
// Sorted Linked list node
// 1 → 1 → 2 → 3 → 4 → 4 → 4 → 5 → 6 → 7 → NULL
sll.addNode(1);
sll.addNode(1);
sll.addNode(2);
sll.addNode(3);
sll.addNode(4);
sll.addNode(4);
sll.addNode(4);
sll.addNode(5);
sll.addNode(6);
sll.addNode(7);
Console.WriteLine(" Before Delete");
sll.display();
sll.deleteDuplicate();
Console.WriteLine(" After Delete");
// 1 → 2 → 3 → 4 → 5 → 6 → 7 → NULL
sll.display();
}
}
Output
Before Delete
1 → 1 → 2 → 3 → 4 → 4 → 4 → 5 → 6 → 7 → NULL
After Delete
1 → 2 → 3 → 4 → 5 → 6 → 7 → NULL
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