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

Ответ

Ключевое различие между стеком и очередью заключается в порядке доступа к элементам. Это две линейные структуры данных, работающие по разным принципам.

Стек (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'])