← 首页 / 链表 · Linked List 待审核 14 页

链表 · Linked List

链表 (linked list) 把元素串成一条「next 链」,放弃了数组的随机访问,换来 O(1) 的就地插入 / 删除。因为只能顺着 next 单向遍历、改写一个指针就牵动整条链,围绕它的经典问题都在解决同一件事—— 如何用少量指针,在一趟扫描里完成操作、又不丢失链的连接

全系列顺着「结构 → 操作 → 应用」展开。先打 基础:节点与指针、哨兵 / O(1) 删除 / 二级指针。再看同一条「节点 + 指针」骨架能长成哪些 结构——沿三条轴变形: 指针方向(单向 / 双向)、首尾是否相连(循环)、为性能改造节点(跳表 / 展开 / XOR)。然后是结构之上的经典 算法: 反转快慢指针(判环 / 定位)、多链表对齐与拼接(合并 / 相交)、 带随机指针的深拷贝。最后在 LRU 缓存 / 跳表 / 邻接表 等真实系统里看这套指针操作的 工程形态

每页都能修改输入、单步推进,观察指针移动、next 箭头逐根改写、代码逐行高亮。算法页指针统一配色 teal = slow / prev / 链 Aorange = fast / cur / 链 Brose = tmp / tail / 结果;结构页 绿 = next / 主链靛蓝 = prev / 后向橙 = 查找指针玫红 = 当前改写 / 目标,每页顶部另有图例。

基础:指针就是一切

结构形态:指针方向 与 首尾相连

性能变体:为查找 / 缓存 / 内存改造节点

快慢指针:用「速度差」换信息

两条链表:对齐与拼接

复制:带随机指针的深拷贝

工程应用:真实系统中的链表

🔗 相关链接

  • 链表常见问题与解法小结 wuchong.me 算法线的选题参考:O(1) 删除、转置、倒数第 k、中点、判环、找环入口、相交判断与公共节点。
  • 双指针系列 @vega/playground 快慢指针、左右对撞、同向追赶的系统拆解;与本系列的快慢指针部分互为补充。
  • Dancing Links @vega/playground 双向循环链表的极致应用:四向指针织成二维环,删除时不释放指针以便回溯「跳回」。
  • Floyd's Tortoise and Hare wikipedia.org 判圈算法的来龙去脉与正确性证明,以及 Brent 算法等改进。
  • Linked list wikipedia.org 各类链表的定义、节点布局与权衡综述。
  • Skip list wikipedia.org Pugh 1990 提出的概率性有序结构,平均 O(log n) 查找 / 插入。
  • XOR linked list wikipedia.org 用 prev ⊕ next 压缩指针的双向链表变体及其局限。