1、课程定位

数据结构是 408 主干入门的第一门课,也是 C++ 程序设计之后最适合继续补强的一门课。它关心的不是“语法怎么写”,而是数据如何组织、操作如何定义、算法为什么正确、复杂度如何估计。

项目 内容
课程 数据结构
教师 邓俊辉
院校 清华大学
资料来源 本地邓俊辉《数据结构》上、下视频与 PDF 课件
学习定位 408 主干入门,衔接算法设计、计算机系统、网络安全项目和后续刷题
笔记范围 0301~0312,对应 12 章课程内容

这组笔记按邓俊辉老师课程的 12 章整理:先搭总框架,再逐章复盘 ADT、实现、关键算法、复杂度、易错点和练习清单。后面真正跟视频学习时,可以在每章继续补截图、推导和代码实验。

2、学习主线

部分 章节 核心问题 后续连接
算法分析基础 Chap 1 如何度量算法效率,如何理解迭代、递归、动态规划和下界 408 算法复杂度、递归分析
线性结构 Chap 2-4 向量、列表、栈和队列如何支持不同访问模式 顺序表、链表、表达式求值、BFS
树与图 Chap 5-6 层次结构和关系网络如何存储、遍历和优化 二叉树、图遍历、最短路、最小生成树
搜索结构 Chap 7-9 如何维护动态集合并支持高效查找、插入和删除 BST、AVL、B 树、散列表、跳表
工程算法结构 Chap 10-12 优先级队列、串匹配和排序如何服务真实算法问题 堆、KMP、BM、快速排序、Shell 排序

3、章节索引

编号 Chap 主题 复盘重点 笔记
0301 1 绪论与算法分析 计算模型、大 O、级数估计、迭代与递归、动态规划、算法下界 查看
0302 2 向量 ADT、扩容、无序/有序向量、唯一化、二分查找、冒泡排序、归并排序 查看
0303 3 列表 双向链表、哨兵节点、无序/有序列表、选择排序、插入排序、列表归并 查看
0304 4 栈与队列 栈 ADT、递归栈、进制转换、括号匹配、表达式求值、队列与 BFS 查看
0305 5 二叉树 树表示、二叉树节点、遍历、重构、PFC、Huffman 编码 查看
0306 6 图 ADT、邻接矩阵/表、BFS、DFS、拓扑排序、优先级搜索、Prim、Dijkstra 查看
0307 7 二叉搜索树 BST 有序性、查找、插入、删除、等价 BST、旋转、AVL 查看
0308 8 高级搜索树 伸展树、B 树、红黑树、KD 树和多路搜索树 查看
0309 9 词典 散列、散列函数、冲突处理、桶排序、基数排序、跳表、位图 查看
0310 10 优先级队列 PQ ADT、完全二叉堆、批量建堆、堆排序、左式堆、d 叉堆 查看
0311 11 串 ADT、蛮力匹配、KMP、BM、KR 和指纹思想 查看
0312 12 排序 快速排序、重复元素处理、线性时间选择、Shell 排序和逆序分析 查看

4、复盘顺序

场景 建议顺序
408 快速入门 0301 -> 0302 -> 0303 -> 0304 -> 0305 -> 0306 -> 0310 -> 0312
算法题刷题前置 0302 -> 0304 -> 0305 -> 0306 -> 0307 -> 0310 -> 0311 -> 0312
项目代码能力 0302 -> 0303 -> 0305 -> 0307 -> 0309 -> 0310
搜索结构专题 0307 -> 0308 -> 0309
字符串与排序专题 0311 -> 0312

5、统一复盘模板

复盘项 要回答的问题
ADT 这个结构对外承诺哪些操作?
表示 顺序、链式、树形、图形或散列存储各有什么代价?
不变式 操作前后必须保持什么性质?
复杂度 最好、最坏、平均或分摊复杂度分别是多少?
边界 空结构、单元素、重复元素、越界、退化情况怎么处理?
代码 能否写出核心操作的伪代码或 C++ 框架?

6、整理口径

邓俊辉老师的课程内容很细,博客这里先整理成可复盘的学习笔记:每章保留主线、关键算法、复杂度和代码骨架。后续看视频时,把具体例题、图示、证明细节和调试记录继续补到对应章节里。