易错点总表
线性表
- 把“头结点”和“首元结点”混为一谈。
- 删除单链表结点时忘记保留前驱指针。
- 快慢指针题里,快指针先走几步常写错。
- 循环链表遍历终止条件写成
None,导致死循环。
栈与队列
- 循环队列判满与判空条件混淆。
- 共享栈题只会说思想,不会画数组示意图。
- 表达式求值时操作数出栈顺序写反。
串
- 只会背 KMP 结论,不会手推
next。 - 失配时误让主串指针回退。
next和nextval的定义混淆。
树与二叉树
- 满二叉树、完全二叉树概念混淆。
- 路径长度按结点数算,实际上通常按边数算。
- WPL 把非叶结点也计入。
- BST 判断只比较父子,不维护整体上下界。
- 线索二叉树中分不清孩子指针和线索指针。
图
- 邻接矩阵行列和入度/出度关系写反。
- 认为 DFS 一定使用栈、BFS 一定使用队列,却解释不出访问顺序。
- Dijkstra 被错误用于含负权边图。
- 拓扑排序只会背结论,不会说入度更新过程。
- 欧拉图判定时只看奇度顶点数,不看连通性。
查找
- 折半查找用于链表。
- AVL 调整分不清 LL、RR、LR、RL。
- 散列表平均查找长度只背公式,不知道适用条件。
排序
- 稳定性记混:选择、快速、堆、希尔都不稳定。
- 快排最好/最坏情况记错。
- 归并排序虽然稳定,但不是原地排序。
- 基数排序不基于关键字比较。
大题书写
- 只有代码,没有“算法思想 + 步骤 + 复杂度”。
- 复杂度写成最终答案,却不给推导依据。
- 变量命名混乱,评卷老师很难看懂。
- 边界条件完全不写,导致步骤分丢失。
考场自检清单
- 我有没有先定义输入和输出?
- 我有没有说明核心数据结构?
- 我有没有说明为什么正确?
- 我有没有写时间复杂度和空间复杂度?
- 我有没有检查空表、空树、空图、单结点、重复元素、越界下标?