MyQueue

Run Settings
LanguageJavaScript
Language Version
Run Command
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());
Editor Settings
Theme
Key bindings
Full width
Lines