Queue Data Structure
by m_fil
HTML
<script src="https://cdn.jsdelivr.net/gh/eu81273/jsfiddle-console/console.js"></script>
JavaScript
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor() {
this.head = null;
this.tail = null;
this.length = 0;
}
enqueue(value) {
const node = new Node(value);
if (this.head) {
this.tail.next = node;
this.tail = node;
} else {
this.head = node;
this.tail = node
}
this.length++;
}
dequeue() {
const current = this.head;
this.head = this.head.next;
this.length--;
return current.value;
}
isEmpty() {
return this.length === 0;
}
getHead() {
return this.head.value;
}
getLength() {
return this.length;
}
print() {
let current = this.head;
while(current) {
console.log(current.value);
current = current.next;
}
}
}
const queue = new Queue();
console.log('is empty?', queue.isEmpty())
console.log('add 10'); queue.enqueue(10)
console.log('add 50'); queue.enqueue(50)
console.log('add 100'); queue.enqueue(100);
console.log('remove', queue.dequeue())
console.log('Queue ↓'); queue.print()
console.log('is empty?', queue.isEmpty())
console.log('Length', queue.getLength())
console.log('Head', queue.getHead())