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)。