← 知识手册目录核心数据结构 · GESP 4 / 5 / 8 级相关跳到完整速查 ↓

PYTHON KNOWLEDGE · 14

栈、队列、链表与并查集

按访问顺序和更新需求理解线性结构,并掌握各操作的真实代价。

GESP 4GESP 5GESP 8

01 · FORMAL DEFINITION

正式定义

栈按后进先出访问,队列按先进先出访问,链表用节点引用连接次序,并查集维护元素所属的动态不相交集合。数据结构的价值在于为特定操作提供清晰语义和复杂度保证。

02 · MUST KNOW

学完这一章,必须说清楚的规则

  1. 01

    Python list 的尾部 append/pop 可作栈,均摊 O(1)。

  2. 02

    队列应使用 collections.deque 的 append/popleft,避免 list.pop(0) 的 O(n) 搬移。

  3. 03

    循环队列用固定数组、队首队尾下标和取模复用空间,必须约定空与满的判定。

  4. 04

    单链表节点保存值和 next;已知前驱时插入删除 O(1),按下标查找仍是 O(n)。

  5. 05

    并查集的 find 找代表元,union 合并集合;路径压缩与按大小/秩合并使均摊代价近似常数。

  6. 06

    选择结构前先列出最频繁操作:随机访问、两端操作、按键查找或集合合并。

03 · RUNNABLE EXAMPLE

可运行示例与因果解释

PYTHON
from collections import deque
queue = deque(['A', 'B'])
queue.append('C')
print(queue.popleft())
print(list(queue))

COMMON PITFALLS

常见误区

  • 用 pop(0) 实现大规模队列
  • 空栈空队列仍然弹出
  • 链表改指针时丢失后续节点
  • 并查集只改父节点却不理解代表元

SCOPE & BOUNDARIES

适用边界

  • Python 没有课程必需的内置链表类型,教学实现用于理解指针关系;工程中应根据实际操作选择成熟容器。
  • 并查集擅长连通性合并,不支持高效删除或一般最短路。