Quick actions

cmd+k|ctrl+k

Navigation

Languages

Barebone LinkedList Queue Implementation

Snippet info

Language

JavaScript

Visibility

public

Author

ralletsfix

Created

2025-07-31T17:30:49.806708Z

Updated

2025-07-31T17:30:49.806708Z

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();
INFO