王道《数据结构》· 讲义 + 21 天学习日程表

面向零基础 / 跨考小白 · 网页课件版 · 日月明(2021 年 408 考 127 分 · 全栈程序员)

王道《数据结构》核心考点讲义

面向零基础 / 跨考小白 · 配合《小白 21 天学完王道数据结构日程表》使用

用法:每章先看 CodeBrick 动画建立画面(数据结构 Visual 总入口 roadmap ,48 个可视化知识点;数据结构 Blog 图文总入口 ds-blog )→ 读王道对应节 → 做本节「习题精选」→ 用本讲义「自测」验收。


第 1 章 绪论

1.1 数据结构的基本概念

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 逻辑结构 4 类各举 1 例;② 顺序表与链表分别对应哪种存储结构;③ ADT 三要素是什么。

1.2 算法和算法评价

核心考点

`O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(n³) < O(2ⁿ) < O(n!)`

易错警示

CodeBrick 配合(直达链接):

自测:① 背出复杂度量级排序;② 给一段双重循环写出时间复杂度;③ 递归求 n! 的空间复杂度是多少。

视频关联(点关键词跳到对应集)


第 2 章 线性表

2.1 线性表的定义和基本操作

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 线性表 4 大逻辑特征;② ListInsert(L,i,e) 的合法 i 范围;③ 位序与下标差多少。

2.2 线性表的顺序表示

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 算第 i 个元素地址;② 顺序表插入平均移动次数;③ 为什么顺序表按值查是 O(n)。

2.3 线性表的链式表示

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 写头插法插入两行代码顺序;② 双链表删 p 要改哪几个指针;③ 为何带头结点更方便。

视频关联(点关键词跳到对应集)


第 3 章 栈、队列和数组

3.1 栈

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 栈的特点;② top 指向栈顶元素时判空/满条件;③ 出栈序列 3,1,2 是否可能,为什么。

3.2 队列

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 循环队列牺牲一单元时判满式;② 队列元素个数公式;③ 双端队列"输出受限"指什么。

3.3 栈和队列的应用

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 用栈做括号匹配的思路;② 写出 `3+4*2` 的后缀式;③ 后缀求值弹栈顺序(先弹左还是右)。

3.4 数组和特殊矩阵

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 行优先二维数组地址公式;② 对称矩阵存下三角个数;③ 下标从 1 起时 a[2][1] 的 k 值。

视频关联(点关键词跳到对应集)


第 4 章 串

4.1 串的定义和实现

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 串比较规则;② `SubString` 越界判定;③ 空串与空格串区别。

4.2 串的模式匹配

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 手算 `ababaa` 的 next 数组;② 再算其 nextval;③ 为什么 KMP 主串指针不回退。

视频关联(点关键词跳到对应集)


第 5 章 树与二叉树

5.1 树的基本概念

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 度为 m 的树第 i 层最多结点数;② n 个结点的 m 叉树最小高度;③ 高度与深度区别。

5.2 二叉树的概念

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 推导 n0 = n2 + 1;② 完全二叉树 i 的双亲/左右孩子;③ 完全二叉树深度公式。

5.3 二叉树的遍历和线索二叉树

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 写先序/中序/后序定义;② 哪种组合能唯一确定树;③ 中序线索树如何 O(1) 找后继。

5.4 树、森林

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 孩子兄弟表示法下如何找第一个孩子和下一个兄弟;② 树先根遍历对应二叉树哪种遍历;③ 森林如何转二叉树。

5.5 树与二叉树的应用

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① AVL 四种失衡类型与旋转;② 哈夫曼树叶子 n 时总结点数;③ BST 删双孩子如何做。

视频关联(点关键词跳到对应集)


第 6 章 图

6.1 图的基本概念

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 无向图度数和与边数关系;② 有向图入度出度和边数关系;③ 连通 vs 强连通区别。

6.2 图的存储及基本操作

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 邻接矩阵空间复杂度;② 邻接表无向图空间;③ 删无向边要改几处。

6.3 图的遍历

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① BFS 用哪种数据结构;② BFS 能求无权图最短路吗;③ DFS 是否一定得到树。

6.4 图的应用

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① Prim 与 Kruskal 思想差异;② Dijkstra 为何不能处理负权;③ 拓扑排序能排出的充要条件。

视频关联(点关键词跳到对应集)


第 7 章 查找

7.1 查找的基本概念

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① ASL 公式;② 成功/失败 ASL 区别;③ 静态与动态查找区别。

7.2 顺序查找和折半查找

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 折半查找前提;② 折半 ASL 量级;③ 为什么链表不能折半。

7.3 树形查找

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 红黑树 5 条性质;② 红黑树与 AVL 平衡度差异;③ 红黑树高度为啥是 O(log n)。

7.4 B树和 B+树

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① m 阶 B 树结点关键字数范围;② B 与 B+ 最大区别;③ 为什么 B+ 树范围查询快。

7.5 散列(Hash)表

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 除留余数法 p 怎么取;② 线性探测缺点;③ 开放定址删除为何留标记。

视频关联(点关键词跳到对应集)


第 8 章 排序

8.1 排序的基本概念

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 稳定性定义;② 比较排序下界;③ 内部 vs 外部排序。

8.2 插入排序

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 直接插入最好/最坏复杂度;② 希尔为什么不稳定;③ 折半插入是否减少移动。

8.3 交换排序

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 快排平均/最坏复杂度;② 快排何时最坏;③ 冒泡与快排稳定性差异。

8.4 选择排序

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 简单选择复杂度与稳定性;② 堆排序建堆时间;③ 升序为何用大顶堆。

8.5 归并 / 基数 / 计数排序

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 归并空间复杂度;② 基数排序是否稳定;③ 哪些排序突破比较下界。

8.6 各种内部排序比较

核心考点

算法平均时间最坏时间空间稳定性
--------------------------------------
直接插入O(n²)O(n²)O(1)稳定
希尔O(n^1.3)O(n²)O(1)不稳定
冒泡O(n²)O(n²)O(1)稳定
快速O(n log n)O(n²)O(log n)不稳定
简单选择O(n²)O(n²)O(1)不稳定
堆O(n log n)O(n log n)O(1)不稳定
归并O(n log n)O(n log n)O(n)稳定
基数O(d(n+r))O(d(n+r))O(n+r)稳定

易错警示

CodeBrick 配合(直达链接):

自测:① 背出稳定性口诀;② 快排 vs 堆排最坏时间差异;③ 归并的额外空间。

8.7 外部排序

核心考点

易错警示

CodeBrick 配合(直达链接):

自测:① 外部排序两个大步骤;② 败者树作用;③ 最佳归并树为何补虚段。

视频关联(点关键词跳到对应集)


配套视频资源(Bilibili 补强)

下面两个都是分集合集,已按王道小节把每一集关联到上面各章的「视频关联」里(点关键词直接跳到对应集)。


补充课程 / 工具(黄金组合)

王道是主线。下面这些是按「科目 × 资源」黄金组合补强的理解型资源,适合王道讲不透或零基础时换着看。

高频考点速查(冲刺用)

计算大题主力:时间复杂度计算 · 矩阵压缩存储地址计算(对称/三角/对角)· KMP next/nextval 数组手算 · 树/图遍历序列 · 最短路径(Dijkstra)与最小生成树(Prim/Kruskal)· 平衡二叉树(AVL)旋转与红黑树性质 · 散列冲突处理(探测/拉链 ASL)· 各种排序算法复杂度与稳定性对比。 概念高频:线性表顺序 vs 链式 · 栈队列应用(括号匹配/表达式/循环队列)· 串匹配(BF/KMP)· 树的性质与二叉树遍历(先中后+层次)· 图遍历(BFS/DFS)· 查找结构对比(BST/AVL/红黑/B/B+/散列)· 排序分类(插交选归基)。


—— 日月明(2021 年 408 考 127 分 · 全栈程序员)

小白 21 天学完王道《数据结构》日程表

适用对象:零基础 / 跨考小白,目标啃下王道 2026《数据结构》并具备 408 应试基础。

核心方法:先动画建立直觉 → 再精读王道定义 → 立刻做本节习题 → 卡住真人答疑。

每日建议投入 2–3 小时。所有 CodeBrick 资源(DS Visual / DS Blog / 真题)均免费。

工具链怎么配合

阶段总览

阶段天数目标
------------------
1 入门直觉Day1–3绪论 + 线性表(顺序/链式)建立基础画面
2 线性结构Day4–8栈/队列/数组/串,吃透 KMP 与循环队列
3 啃大头·树Day9–13树与二叉树(遍历/线索/平衡/哈夫曼),408 分值大头
4 啃大头·图Day14–16图存储/遍历/最小生成树/最短路径/拓扑关键路径
5 查找与排序Day17–19查找结构(BST/AVL/红黑/B/B+/散列)+ 八大排序
6 真题闭环Day20–21真题查漏 + 错题复习 + 总复盘

21 天明细

天阶段王道书(看哪节)CodeBrick(做什么)当日任务 / 输出自测(能答出来 = 真懂)
----------------------------------------------------------------------------------------------
1入门直觉1.1 数据结构的基本概念、1.2 算法和算法评价DS Visual 通览 48 个可视化知识点 roadmap背逻辑结构 4 类;默写复杂度量级排序能说出逻辑 vs 存储结构;写出 O 量级从快到慢
2入门直觉复习 1.2,手算 O(n²) 双重循环 / 递归复杂度DS Blog 算法评价图文完成第 1 章习题精选 + 对答案能给一段代码写时间/空间复杂度
3入门直觉2.1 线性表的定义和基本操作、2.2 线性表的顺序表示DS Visual 顺序表插入/删除动画手算 Loc(ai) 地址;做 2.1/2.2 习题顺序表插入平均移动次数;为什么按值查是 O(n)
4线性结构2.3 线性表的链式表示(单/双/循环/静态链表)DS Visual 链表头插/尾插/删除动画手写单链表插入两行代码顺序;做 2.3 习题能写 `s->next=p->next; p->next=s`;双链表删 p 改哪几个指针
5线性结构3.1 栈(顺序/链/共享)、3.2 队列(循环/链/双端)DS Visual 栈入出/循环队列动画手算循环队列元素个数;做 3.1/3.2 习题循环队列牺牲一单元判满式;出栈序列 3,1,2 是否可能
6线性结构3.3 栈和队列的应用(括号匹配/表达式求值/层次遍历)DS Blog 中缀转后缀图文写 `3+4*2` 的后缀式;做 3.3 习题中缀转后缀规则;后缀求值先弹左还是右
7线性结构3.4 数组和特殊矩阵(压缩/对称/三角/稀疏)DS Visual 矩阵压缩地址动画手算对称矩阵 a[2][1] 的 k 值;做 3.4 习题行优先二维地址公式;压缩下标从 0/1 起差异
8线性结构4.1 串的定义和实现、4.2 串的模式匹配(BF/KMP)DS Visual KMP next 指针移动动画手算 `ababaa` 的 next 与 nextval;做 4 章习题能区分 next 与 nextval;KMP 为何主串不回退
9啃大头·树5.1 树的基本概念、5.2 二叉树的概念DS Blog 树性质 / 二叉树性质图文推导 n0=n2+1;做 5.1/5.2 习题度为 m 的树第 i 层最多结点数;完全二叉树孩子/双亲公式
10啃大头·树5.3 二叉树的遍历和线索二叉树DS Visual 先/中/后序 + 层次遍历动画由先序+中序还原一棵二叉树;做 5.3 习题哪种序列组合能唯一确定树;中序线索树如何 O(1) 找后继
11啃大头·树5.4 树、森林(孩子兄弟表示/转换/遍历对照)DS Visual 树→二叉树转换动画理清孩子兄弟表示法;做 5.4 习题树先根遍历对应二叉树哪种遍历;森林如何转二叉树
12啃大头·树5.5 树与二叉树的应用(BST/AVL 旋转/哈夫曼)DS Visual AVL 四种旋转 + 哈夫曼建树动画手算 AVL 插入失衡类型与旋转;做 5.5 习题LL/RR/LR/RL 各自触发条件;哈夫曼叶子 n 时总结点数
13啃大头·树第 5 章疑难点回看 + 易错点整理DS Visual 再跑遍历/旋转动画第 5 章习题总练;整理个人易错清单能列出自己 3 个最薄弱的树相关知识点
14啃大头·图6.1 图的基本概念、6.2 图的存储及基本操作DS Visual 邻接矩阵/邻接表动画对比两种存储的空间;做 6.1/6.2 习题无向图度数和与边数关系;删无向边改几处
15啃大头·图6.3 图的遍历(BFS/DFS)DS Visual BFS/DFS 逐步动画手画一个图的一种 BFS/DFS 序列;做 6.3 习题BFS 用哪种数据结构;为什么 BFS 只能求无权图最短路
16啃大头·图6.4 图的应用(MST/Dijkstra/Floyd/拓扑/关键路径)DS Visual Prim/Kruskal + Dijkstra 动画手算 Prim/Kruskal 与 Dijkstra;做 6.4 习题Dijkstra vs Prim 区别;拓扑排序能排出的充要条件
17查找与排序7.1 查找的基本概念、7.2 顺序查找和折半查找、7.3 树形查找DS Visual 折半判定树 / AVL 查找动画手算折半 ASL;做 7.1–7.3 习题折半前提;红黑树 5 条性质;红黑 vs AVL 平衡度差异
18查找与排序7.4 B树和 B+树、7.5 散列(Hash)表DS Visual B 树分裂 / 散列冲突动画手算散列 ASL(线性探测);做 7.4/7.5 习题m 阶 B 树关键字范围;B 与 B+ 最大区别;线性探测缺点
19查找与排序8.1–8.4 排序基本概念/插入/交换/选择DS Visual 各排序逐步动画手算快排一趟划分;做 8.1–8.4 习题快排何时最坏;简单选择/堆排为何不稳定;升序为何用大顶堆
20真题闭环8.5–8.7 归并/基数/计数/比较/外部排序 + 查漏DS Visual 归并/基数动画 + 真题练习背稳定性口诀;做 50–80 道真题标错因;做 8.5–8.7 习题归并额外空间;基数/计数是否突破比较下界;稳定性口诀
21真题闭环总复盘CodeBrick 考频地图 + 错题二刷 + 学习诊断二刷错题;列未懂清单 → 真人答疑能列出 ≤5 个仍不懂的点,准备提问

使用说明

1. 每日顺序:先看 CodeBrick 动画/Blog 建立画面 → 再读王道对应节 → 做本节习题精选 → 对答案与解析 → 自测栏答不出就回看。 2. 自测是硬指标:自测栏答不顺,当天内容就没真懂,别急着往后赶。 3. 卡住就问:一道题卡 20 分钟以上,直接找日月明真人答疑(5 元/题),保持节奏比硬磕重要。 4. 重高频轻低频:Day20–21 用 CodeBrick 数据中心考频地图,把力气压在树、图、查找、排序这些高分值区。

—— 日月明(2021 年 408 考 127 分 · 全栈程序员)