Карта / Базовые структуры / Стек и очередь

Стек и очередь

Стек (Stack) — последним пришёл, первым ушёл (LIFO). Как стопка тарелок: кладёшь сверху, берёшь тоже сверху.

Deque<Integer> stack = new ArrayDeque<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop();   // 3 — последний добавленный

Очередь (Queue) — первым пришёл, первым ушёл (FIFO). Как очередь в магазине.

Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.poll();   // 1 — первый добавленный

Подробнее про реализации в Java — в теме «Queue и Deque».

Копнуть глубже

Где реально используются:

  • Стек: отмена действий (Ctrl+Z), история переходов браузера “назад”, вызовы методов (call stack — каждый вызов кладётся в стек, возврат — снимается), обход в глубину (DFS).
  • Очередь: обработка задач по порядку поступления (очередь печати, очередь сообщений), обход в ширину (BFS), буферизация (например, видео-стриминг).
Стек (LIFO) 1 2 3 ← pop/push
<text x="350" y="16" text-anchor="middle" font-size="12" fill="currentColor" opacity="0.6">Очередь (FIFO)</text>
<rect x="280" y="40" width="50" height="40" fill="#16a34a" fill-opacity="0.15" stroke="#16a34a" stroke-opacity="0.6"/><text x="305" y="64" text-anchor="middle" font-size="13" fill="currentColor">1</text>
<rect x="330" y="40" width="50" height="40" fill="currentColor" fill-opacity="0.08" stroke="currentColor" stroke-opacity="0.5"/><text x="355" y="64" text-anchor="middle" font-size="13" fill="currentColor">2</text>
<rect x="380" y="40" width="50" height="40" fill="currentColor" fill-opacity="0.08" stroke="currentColor" stroke-opacity="0.5"/><text x="405" y="64" text-anchor="middle" font-size="13" fill="currentColor">3</text>
<text x="305" y="100" text-anchor="middle" font-size="10.5" fill="currentColor" opacity="0.6">poll() ←</text>
<text x="405" y="100" text-anchor="middle" font-size="10.5" fill="currentColor" opacity="0.6">→ offer()</text>
🎤 Закрыл тему, если можешь объяснить:
• разницу LIFO (стек) и FIFO (очередь);
• хотя бы по одному примеру реального применения каждой структуры (если дошёл до 2-го слоя).