Back to 30 Seconds Of Code

JavaScript Data Structures - Queue

content/snippets/js/s/data-structures-queue.md

14.0.01.8 KB
Original Source

Definition

A queue is a linear data structure that behaves like a real-world queue. It follows a first in, first out (FIFO) order of operations, similar to its real-world counterpart. This means that new items are added to the end of the queue, whereas items are removed from the start of the queue.

The main operations of a queue data structure are:

  • enqueue: Adds an element to the end of the queue
  • dequeue: Removes an element from the start of the queue
  • peek: Retrieves the element at the start of the queue, without removing it
  • isEmpty: Checks if the queue is empty

Implementation

js
class Queue {
  constructor() {
    this.items = [];
  }

  enqueue(item) {
    this.items.push(item);
  }

  dequeue() {
    return this.items.shift();
  }

  peek() {
    return this.items[0];
  }

  isEmpty() {
    return this.items.length === 0;
  }
}
  • Create a class with a constructor that initializes an empty array, items, for each instance.
  • Define an enqueue() method, which uses Array.prototype.push() to add an element, item, to the end of the items array.
  • Define a dequeue() method, which uses Array.prototype.shift() to remove an element from the start of the items array.
  • Define a peek() method, which retrieves the value of the first element in the items array, without removing it.
  • Define an isEmpty() method, which uses Array.prototype.length to determine if the items array is empty.
js
const queue = new Queue();

queue.isEmpty();    // true

queue.enqueue('A');
queue.enqueue('B');
queue.enqueue('C');
queue.enqueue('D');
queue.enqueue('E');

queue.isEmpty();    // false

queue.peek();       // 'A'

queue.dequeue();    // 'A'
queue.dequeue();    // 'B'
queue.dequeue();    // 'C'