两者都是具有 O(1) 端点的线性 ADT,但移除顺序相反:堆栈是 LIFO(最近的优先),队列是 FIFO(最旧的优先)。将数据结构与问题所需的顺序相匹配。
核心区别
text
Stack (LIFO): push 1,2,3 -> pop order 3,2,1
Queue (FIFO): enq 1,2,3 -> deq order 1,2,3
真实例子
代码对比
python
# DFS uses a stack: explore newest branch first
stack = [start]
while stack:
node = stack.pop() # LIFO -> goes deep
for nb in graph[node]: stack.append(nb)
# BFS uses a queue: explore nearest first
from collections import deque
q = deque([start])
while q:
node = q.popleft() # FIFO -> goes level by level
for nb in graph[node]: q.append(nb)
为什么这很重要
LIFO 与 FIFO 的选择直接改变算法行为:同一个图遍历用堆栈变成 DFS,用队列变成 BFS。
识别问题是需要
