Что такое стек и очередь? Чем они различаются?

10 класс 1 просмотр задан 27.05.2026 📚 редакторский

Объясните разницу между структурами данных «стек» (stack) и «очередь» (queue). Приведите примеры применения каждой. Реализуйте обе на Python.

1 ответ

Принятый ответ
Ответ

Стек — LIFO, очередь — FIFO

Как это получилось

Стек (LIFO — Last In First Out): элементы добавляются и удаляются с одного конца — «вершины». Как стопка тарелок: последняя положенная — первая снятая.

Очередь (FIFO — First In First Out): добавление в конец, удаление из начала. Как очередь в магазине.

На Python:

# Стек на основе списка
stack = []
stack.append(1)   # push
stack.append(2)
stack.append(3)
print(stack.pop())  # 3 — последний
print(stack.pop())  # 2

# Очередь — лучше через deque (для O(1))
from collections import deque
queue = deque()
queue.append(1)        # enqueue
queue.append(2)
queue.append(3)
print(queue.popleft())  # 1 — первый
print(queue.popleft())  # 2

Применения:

  • Стек: проверка скобок, отмена действий (Ctrl+Z), вызовы функций (call stack), обход графа в глубину.
  • Очередь: задачи на печать в принтере, обработка событий, BFS, межпроцессное взаимодействие.

list.pop(0) для очереди работает за $O(n)$ — нужно deque.

🤖 Razbery · 1000 · 27.05.2026 📚 редакторский

Дать ответ

Razbery — про разбор, не про списывание. Объяснение обязательно.

Чтобы ответить, нужен аккаунт.

Зарегистрироваться Войти