Barebone LinkedList Queue Implementation

Run Settings
LanguageJavaScript
Language Version
Run Command
class Queue { constructor() { this.back = null; this.front = null; } push(value) { const node = { value: value, next: null }; if (this.back) { this.back.next = node; } this.back = node; if (!this.front) { this.front = node; } } pop() { const node = this.front; if (node) { this.front = node.next; if (!this.front) this.back = null; return node.value; } return null; } } function runTests() { const q = new Queue(); console.assert(q.pop() === null, "pop of an empty queue returns null"); console.assert(q.front === null, "front of recently created empty queue should be null"); console.assert(q.back === null, "back of recently created empty queue should be null"); q.push(1); console.assert(q.pop() === 1, "pop of queue with a single element returns it"); console.assert(q.pop() === null, "pop of an empty queue returns null"); console.assert(q.front === null, "front of an empty queue should be null"); console.assert(q.back === null, "front of an empty queue should be null"); q.push("A"); q.push("B"); q.push("C"); console.assert(q.pop() === "A", "A: queue obeys FIFO property"); console.assert(q.pop() === "B", "B: queue obeys FIFO property"); console.assert(q.pop() === "C", "C: queue obeys FIFO property"); console.assert(q.pop() === null, "pop of an empty queue returns null"); console.assert(q.front === null, "front of an empty queue should be null"); console.assert(q.back === null, "front of an empty queue should be null"); } runTests();
Editor Settings
Theme
Key bindings
Full width
Lines