1.栈(stack)

栈是 后进先出(LIFO) 的数据结构,常用操作是 push(入栈)和 pop(出栈)。
Python 中直接用 列表(list) 即可实现:

stack = []

#入栈
stack.append(1)
stack.append(2)

#出栈
top = stack.pop() # 弹出 2,栈变为 [1]
print(top) # 输出: 2

# 查看栈顶(不弹出)
peek = stack[-1]
print(peek)
  • 为什么用list实现栈

list.append()list.pop() 的时间复杂度均为 O(1),效率高。

2.队列(Queue)

队列是 先进先出(FIFO) 的数据结构,常用操作是 enqueue(入队)和 dequeue(出队)。

Python中有两种实现队列的方式:

(1)collections.deque 实现队列

deque 是双端队列,适合高效的头尾操作:

from collections import deque

queue = deque()

# 入队
queue.append(1)      # 队列: [1]
queue.append(2)      # 队列: [1, 2]

# 出队
front = queue.popleft()  # 弹出 1,队列变为 [2]
print(front)             # 输出: 1

(2)queue.Queue 实现线程安全队列

如果需要线程安全(多线程环境),使用 queue.Queue

from queue import Queue

q = Queue()

# 入队
q.put(1)
q.put(2)

# 出队
front = q.get()      # 弹出 1
print(front)         # 输出: 1

为什么不用 list 实现队列?

  • list.pop(0) 的时间复杂度是 O(n)(需要移动所有元素),而 deque.popleft()O(1)