Назад к вопросам
Junior
62
questionbank
В чем разница между структурой данных 'стек' и 'очередь'?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Стек (Stack) — абстрактный тип данных, основанный на принципе LIFO (Last-In, First-Out). Последний добавленный элемент будет первым извлечен.
Очередь (Queue) — абстрактный тип данных, основанный на принципе FIFO (First-In, First-Out). Первый добавленный элемент будет первым извлечен.
Основные операции:
| Операция | Стек (Stack) | Очередь (Queue) |
|---|---|---|
| Добавление | push() (обычно в конец) |
enqueue() (обычно в конец) |
| Удаление | pop() (из конца) |
dequeue() (из начала) |
| Просмотр | peek() или top() (элемент в конце) |
peek() или front() (элемент в начале) |
Применение:
- Стек: вызовы функций (стек вызовов), синтаксический анализ, откат действий (undo).
- Очередь: планирование задач, управление буфером (например, ввод-вывод), обход графа в ширину (BFS).
Реализация в Python:
Для стека можно использовать список, добавляя и удаляя элементы с конца:
# Стек с использованием списка
stack = []
stack.append('a') # push
stack.append('b') # push
item = stack.pop() # pop
Для очереди можно использовать collections.deque для эффективного добавления и удаления с обоих концов:
# Очередь с использованием collections.deque
from collections import deque
queue = deque()
queue.append('a') # enqueue
queue.append('b') # enqueue
item = queue.popleft() # dequeue