class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor(value) {
this.first = {
value: value,
next: null
};
this.last = this.first;
this.length = 1;
}
push (value) {
const newNode = new Node(value);
if (this.length === 1) {
this.first.next = newNode;
this.last = newNode;
this.length++;
return this;
}
const prevLast = this.last;
this.last = newNode;
prevLast.next = this.last;
this.length++;
return this;
}
peek () {
if (this.length < 1)
return null;
return this.first.value;
}
pop () {
let firstItem = this.first;
if (this.length === 1) {
firstItem = this.first;
this.first === null
this.length--;
return firstItem;
}
firstItem = this.first;
this.first = this.first.next;
this.length--;
console.log(firstItem.value);
return firstItem.value;
}
empty () {
if (this.length < 1)
return true;
return false;
}
print () {
const list = [];
let lastItem = this.first;
while(lastItem !== null) {
list.push(lastItem.value);
lastItem = lastItem.next;
}
console.log(list);
}
}
const queue = new Queue(5);
queue.push(4);
queue.push(36);
queue.push(40);
queue.push(9);
queue.print();
queue.pop();
queue.print();
queue.pop();
queue.pop();
queue.print();
queue.pop();
queue.pop();
queue.pop();
console.log(queue.empty());