class Queue<T> {
private items: T[] = [];
enqueue(element: T): void {
this.items.push(element);
}
dequeue(): T | undefined {
if (this.isEmpty()) {
console.error("Queue is empty. Cannot dequeue.");
return undefined;
}
return this.items.shift();
}
peek(): T | undefined {
if (this.isEmpty()) {
console.error("Queue is empty. Nothing to peek.");
return undefined;
}
return this.items[0];
}
isEmpty(): boolean {
return this.items.length === 0;
}
size(): number {
return this.items.length;
}
clear(): void {
this.items = [];
}
print(): void {
if (this.isEmpty()) {
console.log("Queue is empty.");
} else {
console.log("Queue contents:", this.items.join(", "));
}
}
}
const queue = new Queue<number>();
// Enqueue elements
queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);
queue.enqueue(40);
queue.print();
// Dequeue elements
console.log("Dequeued:", queue.dequeue());
console.log("Dequeued:", queue.dequeue());
// Peek at the front element
console.log("Front element:", queue.peek());
// Check if the queue is empty
console.log("Is queue empty?", queue.isEmpty());
// Get the size of the queue
console.log("Queue size:", queue.size());
// Clear the queue
queue.clear();
console.log("Is queue empty? after clearing:", queue.isEmpty());
/*
run:
"Queue contents:", "10, 20, 30, 40"
"Dequeued:", 10
"Dequeued:", 20
"Front element:", 30
"Is queue empty?", false
"Queue size:", 2
"Is queue empty? after clearing:", true
*/