第一步:抓大纲
找最新考研大纲,数据结构通常考这些:
线性表(顺序表、链表)
栈和队列
树与二叉树(遍历、哈夫曼)
图(存储、遍历、最短路径)
查找(二叉排序树、哈希)
排序(、堆排、归并)
第二步:硬啃教材
用严蔚敏《数据结构》或王道考研书,一章一章过。看不懂就直接背:
链表插入:先断后连(新节点->next=老节点->next,老节点->next=新节点)
二叉树遍历:前序(根左右),中序(左根右),后序(左右根)
口诀:挑基准,分两边,递归排
第三步:暴力刷题
直接怼历年真题,重复题型记套路:
设计算法题:先写结构定义,再写函数框架(参数、返回值),最后填充核心步骤
时间复杂度分析:嵌套循环看层数,递归看调用次数
代码填空:盯着前后语句的变量名和逻辑衔接
第四步:错题本
只记三类:概念混的(比如栈和队列区别)、公式错的(比如AVL树高度计算)、代码写崩的(比如链表指针丢失)。每周翻一次。
第五步:模拟考场
拿最近三年真题限时3小时做,逼自己按步骤:
1.选择题(30分钟):不会就蒙“C”或排除最离谱选项
2.应用题(60分钟):哪怕不会也把公式和图示画上去
3.算法题(90分钟):必须写注释,写清楚边界条件
【高频考点直接背】
必考排序算法:快速排序、堆排序、归并排序的时空复杂度(O(nlogn)不稳定,堆排O(nlogn)不稳定,归并O(nlogn)稳定)
必考树概念:完全二叉树结点数计算(第i层最多2^(i-1)个,深度为h的树最多2^h-1个)
必考图操作:DFS用栈,BFS用队列,最短路径迪杰斯特拉算法(贪心+松弛)
【真题答案怎么用】
别纠结对错,直接看命题套路:
算法题答案:抄标准答案的变量命名风格(比如用pLNode而不是p)
应用题答案:模仿标准答案的分步描述(先简述思想,再举例说明,最后总结)
选择题答案:统计近五年选项分布(B和C出现概率通常较高)
【蒙题技巧】
选择题遇到完全不懂的:
含“时间复杂度”的题:选O(nlogn)或O(n)的概率大于O(n²)
含“数据结构适用场景”的题:选“哈希表”或“二叉树”的概率高
涉及“稳定排序”的题:归并排序和插入排序是常客
【模板句式】
算法题开头万能模板:
typedef struct {
int data[MAX];
int length;
} SeqList; // 顺序表定义
void Solution(SeqList L, int key) {
if (L == NULL || L->length == 0) return; // 边界判断
// 核心步骤写这里
应用题描述模板:
“该算法采用××思想,首先××,然后××,时间复杂度为××,空间复杂度为××,适用于××场景。”
说完。