implement queue using linked list in kotlin
Kotlin program for implement queue using linked list. Here more information.
/*
Kotlin Program for
Implement queue using linked list
*/
// Create Q node
class QNode
{
var data: Int;
var next: QNode ? ;
constructor(value: Int)
{
this.data = value;
this.next = null;
}
}
class MyQueue
{
var head: QNode ? ;
var tail: QNode ? ;
var count: Int;
constructor()
{
this.head = null;
this.tail = null;
this.count = 0;
}
fun size(): Int
{
return this.count;
}
fun isEmpty(): Boolean
{
return this.count == 0;
}
// Add new node of queue
fun enqueue(value: Int): Unit
{
// Create a new node
val node: QNode = QNode(value);
if (this.head == null)
{
// Add first element into queue
this.head = node;
}
else
{
// Add node at the end using tail
this.tail?.next = node;
}
this.count += 1;
this.tail = node;
}
// Delete a element into queue
fun dequeue(): Int
{
if (this.head == null)
{
println("Empty Queue");
return -1;
}
// Pointer variable which are storing
// the address of deleted node
val temp: QNode? = this.head;
// Visit next node
this.head = this.head?.next;
this.count -= 1;
if (this.head == null)
{
// When deleting a last node of linked list
this.tail = null;
}
return temp!!.data;
}
// Get front node
fun peek(): Int
{
if (this.head == null)
{
println("Empty Queue");
return -1;
}
return this.head!!.data;
}
}
fun main(args: Array < String > ): Unit
{
val task: MyQueue = MyQueue();
// Initially number of element
println("isEmpty : " + task.isEmpty());
// Add element into queue
task.enqueue(10);
task.enqueue(20);
task.enqueue(30);
task.enqueue(40);
task.enqueue(50);
// Test other function
println("size : " + task.size());
println("peek : " + task.peek());
println("dequeue : " + task.dequeue());
println("size : " + task.size());
println("peek : " + task.peek());
println("isEmpty : " + task.isEmpty());
}
Output
isEmpty : true
size : 5
peek : 10
dequeue : 10
size : 4
peek : 20
isEmpty : false
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