JavaScript stacks and queues
A stack is last-in, first-out, and a JavaScript array already supports it: push adds to the end and pop removes from the end, both in O(1). A queue is first-in, first-out. Using push and shift works, but shift removes from the front and may move every remaining element, which is O(n) for a large array.
JavaScript
class Queue {
constructor() {
this.items = [];
this.head = 0;
}
enqueue(value) {
this.items.push(value);
}
dequeue() {
if (this.head === this.items.length) {
return undefined;
}
const value = this.items[this.head];
this.head++;
return value;
}
get size() {
return this.items.length - this.head;
}
}
const stack = [];
stack.push("a");
stack.push("b");
stack.push("c");
console.log(stack.pop(), stack.pop(), stack.length);
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
console.log(queue.dequeue(), queue.dequeue(), queue.size);
console.log(queue.dequeue(), queue.dequeue());