Insert linked list node at nth last position in kotlin
Kotlin program for Insert linked list node at nth last position. Here problem description and explanation.
// Kotlin program for
// Insert linked list node at nth last position
// Linked list node
class LinkNode
{
var data: Int;
var next: LinkNode ? ;
constructor(data: Int)
{
this.data = data;
this.next = null;
}
}
class LinkedList
{
var head: LinkNode ? ;
constructor()
{
this.head = null;
}
// insert node at end position
fun insert(value: Int): Unit
{
// Create a new node
val node: LinkNode = LinkNode(value);
if (this.head == null)
{
this.head = node;
}
else
{
var temp: LinkNode ? = this.head;
// Find the last node
while (temp?.next != null)
{
// Visit to next node
temp = temp.next;
}
// Add node
temp?.next = 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");
}
// Add node at specific position from the end of linked list
fun endPosition(n: Int, value: Int): Unit
{
if (this.head == null)
{
println("Empty Linked list");
}
else if (n <= 0)
{
println("Invalid position");
}
else
{
var temp: LinkNode ? = this.head;
var location: LinkNode ? = null;
var position = n;
while (temp != null)
{
position -= 1;
if (position <= 0)
{
if (location == null)
{
location = this.head;
}
else
{
location = location.next;
}
}
// Visit to next node
temp = temp.next;
}
if (position <= 1)
{
val node: LinkNode = LinkNode(value);
if (location == null)
{
// Add node at first place
node.next = this.head;
this.head = node;
}
else
{
// Add node at intermediate position
node.next = location.next;
location.next = node;
}
}
else
{
println("Opps position not found");
}
}
}
}
fun main(args: Array < String > ): Unit
{
val sll: LinkedList = LinkedList();
// Add node
sll.insert(5);
sll.insert(4);
sll.insert(3);
sll.insert(2);
sll.insert(1);
sll.display();
val position: Int = 2;
val data: Int = 10;
sll.endPosition(position, data);
println(" Add " + data + " at last " + position + "-nd position");
sll.display();
}
Output
5 → 4 → 3 → 2 → 1 → NULL
Add 10 at last 2-nd position
5 → 4 → 3 → 2 → 10 → 1 → 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