链表
链表是训练指针操作最经典的结构。它不像数组那样支持随机访问,但在插入、删除、重排时更灵活,因此是面试里非常高频的线性结构专题。
识别信号
- 输入是单链表或双链表结构
- 需要原地修改节点连接关系(反转、删除、拆分、合并)
- 出现”中点、倒数第 k 个、判环”等定位类问题
- 不允许随机访问,只能顺序遍历
反例:如果需要频繁随机访问或按下标操作,用数组更合适。
怎么处理
- 先画出当前节点、前驱节点、后继节点分别是谁。
- 如果可能动到头节点,先判断要不要加虚拟头节点。
- 改指针之前先保存后继,避免链表断掉。
- 如果题目涉及”中点、环、倒数第 k 个”,优先想快慢指针。
典型实例
| 专题 | 关键差异 | 先看什么 |
|---|---|---|
| 链表题处理框架 | 覆盖指针重排、快慢指针、合并拆分三大类 | 虚拟头节点 + 反转三步法 + 快慢指针模板 |
看到什么就先想到这类
- 出现“原地反转、删除节点、重排链表”。
- 出现“中点、倒数第 k 个、链表有环”。
- 出现“不能随机访问,只能顺着走”。