PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

В чем разница между стеком и очередью?

Массивы и структуры данных

Стек (stack) и очередь (queue) — линейные структуры данных с разным порядком доступа: стек — LIFO (последним пришёл — первым вышел), очередь — FIFO (первым пришёл — первым вышел).

Стек (LIFO)

Добавление и удаление — с одного конца (вершины).

const stack = [];
stack.push(1);
stack.push(2);
stack.pop(); // 2 — последний добавленный

Применение: история/undo, стек вызовов функций, обход в глубину (DFS), проверка скобок.

Очередь (FIFO)

Добавление — в конец, удаление — из начала.

const queue = [];
queue.push(1);
queue.push(2);
queue.shift(); // 1 — первый добавленный

Применение: очередь задач, обработка событий, обход в ширину (BFS), Event Loop (очереди задач).

Главное различие

  • Стек — LIFO: последний вошёл — первый вышел.
  • Очередь — FIFO: первый вошёл — первый вышел.

Реализация в JS

Оба часто делают на массиве. Для больших объёмов очередь эффективнее реализовать на связном списке или двух стеках, т. к. shift у массива — O(n).

Коротко для собеседования

Стек — LIFO (push/pop), для истории, undo, DFS, стека вызовов. Очередь — FIFO (push/shift), для задач, событий, BFS. Разница в порядке извлечения: стек берёт последний элемент, очередь — первый.

Другие вопросы раздела