Ответ
Ключевое различие между стеком и очередью заключается в порядке доступа к элементам. Это две линейные структуры данных, работающие по разным принципам.
Стек (Stack) — LIFO
Работает по принципу LIFO (Last-In, First-Out) — «последним пришел, первым ушел». Элемент, который был добавлен в стек последним, будет извлечен первым.
- Аналогия: стопка тарелок. Вы можете добавить новую тарелку только сверху и взять тоже только верхнюю.
- Операции:
push
(добавить элемент на вершину),pop
(удалить элемент с вершины).
Пример на Python:
stack = []
# Добавляем элементы (push)
stack.append('A')
stack.append('B')
stack.append('C') # C теперь на вершине
print(stack) # ['A', 'B', 'C']
# Извлекаем элемент (pop)
item = stack.pop() # Извлекается 'C'
print(item) # C
print(stack) # ['A', 'B']
Очередь (Queue) — FIFO
Работает по принципу FIFO (First-In, First-Out) — «первым пришел, первым ушел». Элемент, который был добавлен первым, будет извлечен первым.
- Аналогия: очередь в магазине. Первый, кто встал в очередь, будет обслужен первым.
- Операции:
enqueue
(добавить элемент в конец),dequeue
(удалить элемент из начала).
Пример на Python (с использованием collections.deque
):
from collections import deque
queue = deque()
# Добавляем элементы (enqueue)
queue.append('A')
queue.append('B')
queue.append('C')
print(queue) # deque(['A', 'B', 'C'])
# Извлекаем элемент (dequeue)
item = queue.popleft() # Извлекается 'A'
print(item) # A
print(queue) # deque(['B', 'C'])