Delete duplicate nodes from sorted linked list in kotlin

Kotlin program for Delete duplicate nodes from sorted linked list. Here problem description and explanation.

/*
    Kotlin program for
    Delete duplicate nodes in sorted linked list
*/
// Linked list node
class LinkNode
{
	var data: Int;
	var next: LinkNode ? ;
	constructor(data: Int)
	{
		this.data = data;
		this.next = null;
	}
}
class SingleLL
{
	var head: LinkNode ? ;
	var tail: LinkNode ? ;
	constructor()
	{
		this.head = null;
		this.tail = null;
	}
	// Add new node at the end of linked list
	fun addNode(value: Int): Unit
	{
		// Create a new node
		val node: LinkNode = LinkNode(value);
		if (this.head == null)
		{
			this.head = node;
		}
		else
		{
			this.tail?.next = node;
		}
		this.tail = node;
	}
	// Display linked list element
	fun display(): Unit
	{
		if (this.head == null)
		{
			return;
		}
		var temp: LinkNode ? = this.head;
		// iterating linked list elements
		while (temp != null)
		{
			print(""+ temp.data + " → ");
			// Visit to next node
			temp = temp.next;
		}
		println(" NULL");
	}
	// Remove the duplicate nodes from sorted singly linked list
	fun deleteDuplicate(): Unit
	{
		if (this.head == null)
		{
			return;
		}
		else
		{
			// Auxiliary variables
			var temp: LinkNode ? = this.head?.next;
			var current: LinkNode ? = this.head;
			var hold: LinkNode ? = 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;
				}
			}
		}
	}
}
fun main(args: Array < String > ): Unit
{
	val sll: SingleLL = 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);
	println(" Before Delete");
	sll.display();
	sll.deleteDuplicate();
	println(" 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







© 2021, kalkicode.com, All rights reserved