Это линейная структура данных, которая работает как реальная очередь. Он следует порядку FIFO (первым пришел, первым ушел) и LILO (последний пришел последним).

Основные операции структуры данных стека:

  • enqueue: добавляет элементы в конец
  • dequeue: удаляет элементы с переднего плана.
  • Peek: извлекает 1-й элемент в очереди, не удаляя его.
  • isEmpty: проверяет, пуста ли очередь.

Синтаксис:

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

  enqueue(value) {
    // if(this.isEmpty()) return 'Queue is empty';
    this.items.push(value);
  }

  dequeue() {
    // if(this.isEmpty()) return 'Queue is empty';
    return this.items.shift();
  }

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

Массив и его методы используются для реализации структуры данных очереди и ее операций. Теперь давайте посмотрим на реализацию каждой операции:

  • enqueue(value): использует Array.prototype.push() для добавления элемента в конец массива.
  • dequeue(): использует Array.prototype.shift() для удаления элемента из начала массива.
  • peek(): извлекает первый элемент массива, не удаляя его.
  • isEmpty(): использует Array.prototype.length, чтобы определить, пуст ли массив или нет.

Пример:

let queueObj = new Queue();

queueObj.enqueue(10);
queueObj.enqueue(20);
queueObj.enqueue(30);

queueObj.isEmpty();                    // false

queueObj.peek();                       // 10

queueObj.dequeue();                    // 10
queueObj.dequeue();                    // 20
queueObj.dequeue();                    // 30

queueObj.isEmpty();                    // true

Спасибо за чтение! Я надеюсь, что вы нашли этот блог информативным и интересным. Если вы заметили какие-либо неточности или у вас есть какие-либо отзывы, пожалуйста, не стесняйтесь, дайте мне знать.