数据结构(王道)
数据结构知识总览
2021、小林子
这个作者很懒,什么都没留下…
展开
-
1.1 数据结构的基本概念
1. 数据结构在学什么?2. 知识总览3. 数据结构的基本概念3.1 什么是数据?3.2 数据元素、数据项3.3 数据结构、数据对象4. 数据结构的三要素4.1 数据的逻辑结构4.2 数据的物理结构4.3 数据的运算5. 数据类型、抽象数据类型6. 知识回顾原创 2022-01-16 20:38:02 · 101 阅读 · 0 评论 -
1.2 算法的基本概念、效率度量(时间复杂度、空间复杂度)
1. 算法的基本概念1.1 知识总览1.2 什么是算法?1.3 算法的特性1.4 好算法的特质1.5 知识回顾与重要考点2. 算法的效率度量2.1 知识总览2.2 如何评估算法时间开销?2.3 算法的时间复杂度2.4 练习2.5 知识回顾3. 算法的效率度量3.1 知识总览3.2 程序运行时的内存需求3.3 空间复杂度3.4 函数递归调用带来的内存开销3.5 知识回顾原创 2022-01-16 21:13:41 · 201 阅读 · 0 评论 -
2.1 线性表的概念和基本操作
1. 知识总览2. 线性表的定义3. 线性表的基本操作4. 知识回顾原创 2022-01-16 21:24:32 · 193 阅读 · 0 评论 -
2.2 顺序表的定义、插入、删除、查找
1. 顺序表的定义1.1 知识总览1.2 顺序表的定义1.3 顺序表的实现–静态分配1.4 顺序表的实现–动态分配1.5 顺序表的实现1.6 知识回顾2. 顺序表的插入删除2.1 知识总览2.2 顺序表的基本操作–插入2.3 插入操作的时间复杂度2.4 顺序表的基本操作–删除2.5 删除操作的时间复杂度2.6 知识回顾3. 顺序表查找3.1 知识总览3.2 顺序表的按位查找3.3 按位查找的时间复杂度3.4 顺序表的按值查找3.5 结构类型的比较3.6 按值查找的时间原创 2022-01-16 21:57:31 · 205 阅读 · 0 评论 -
2.3 单链表的定义、插入、删除、查找、建立
1. 单链表的定义2. 单链表的插入和删除3. 单链表的查找4. 单链表的建立原创 2022-01-16 22:54:06 · 222 阅读 · 0 评论 -
2.4 双链表、循环链表、静态链表
1. 双链表2. 循环链表3. 静态链表原创 2022-01-17 10:22:44 · 149 阅读 · 0 评论 -
2.5 顺序表vs链表
1. 知识总览2. 逻辑结构对比3. 存储结构对比4. 基本操作对比5. 知识回顾原创 2022-01-17 10:22:56 · 67 阅读 · 0 评论 -
3.1 栈的基本概念、顺序存储方式、链式存储方式
栈的基本概念、顺序存储方式、链式存储方式原创 2022-01-17 10:23:06 · 211 阅读 · 0 评论 -
3.2 队列的基本概念、顺序实现、链式实现、双端队列
1. 队列的基本概念1.1 知识总览1.2 队列的定义1.3 队列的基本操作1.4 知识回顾2. 队列的顺序实现2.1 队列的顺序实现2.2 初始化操作2.3 入队操作2.4 方案一:判断队列已满/已空2.5 方案二:判断队列已满/已空2.6 方案三:判断队列已满/已空2.7 知识回顾3. 队列的链式实现3.1 知识总览3.2 队列的链式实现3.3 初始化(带头结点)3.4 入队(带头结点)3.5 入队(不带头结点)3.6 出队(带头结点)3.7 ...原创 2022-01-17 17:46:41 · 136 阅读 · 0 评论 -
3.3 栈的应用(括号匹配,中缀表达式求值,递归)
1. 栈的应用(括号匹配)1.1 括号匹配问题1.2 算法演示1.2.1 左括号不匹配1.2.2 右括号单身1.2.3 左括号单身1.3 算法流程图1.4 算法实现1.5 知识回顾2. 栈的应用(表达式求值第一季)2.1 知识总览2.2 大家熟悉的算数表达式2.3 波兰数学家的灵感2.4 中缀、后缀、前缀表达式2.5 中缀表达式转后缀表达式(手算)2.5.1 后缀表达式的计算(手算)2.5.2 后缀表达式的计算(机算)2.6 中缀表达式转前缀表达式...原创 2022-01-17 20:21:16 · 630 阅读 · 0 评论 -
3.4 队列的应用(树的层次遍历、图的广度优先遍历、操作系统中的应用)
1. 树的层次遍历2. 图的广度优先遍历3. 队列在操作系统中的应用1. 树的层次遍历2. 图的广度优先遍历3. 队列在操作系统中的应用原创 2022-01-17 20:28:34 · 106 阅读 · 0 评论 -
3.5 矩阵的压缩存储(一维数组、二维数组、对称、三角、三对角、稀疏矩阵)
1. 知识总览2. 一维数组的存储结构3. 二维数组的存储结构4. 普通矩阵的存储5. 对称矩阵的压缩存储6. 三角矩阵的压缩存储7. 三对角矩阵的压缩存储8. 稀疏矩阵的压缩存储8.1 顺序存储–三元组<行,列,值>8.2 链式存储-十字链表法9. 知识回顾1. 知识总览2. 一维数组的存储结构3. 二维数组的存储结构4. 普通矩阵的存储5. 对称矩阵的压缩存储6. 三角矩阵的压缩存储7. 三对角矩阵的压缩存储...原创 2022-01-17 20:55:29 · 4189 阅读 · 1 评论 -
4.1 串的定义和基本操作、存储结构、朴素模式匹配算法
1. 串的定义和基本操作1.1 知识总览1.2 串的定义1.3 串 vs 线性表1.4 串的基本操作1.5 串的比较操作1.6 字符集编码1.7 拓展:乱码问题1.8 知识回顾2. 串的存储结构2.1 知识总览2.2 串的顺序存储2.3 串的链式存储2.4 基本操作的实现2.4.1 求子串2.4.2 比较操作2.4.3 定位操作2.5 知识回顾3. 朴素模式匹配算法3.1 什么是模式匹配?3.2 朴素模式匹配算法3.3 朴素模式匹配算法性能...原创 2022-01-17 21:38:04 · 277 阅读 · 0 评论 -
5.1 树的定义和基本术语、树的性质
1. 树的定义和基本术语1.1 知识总览1.2 树的基本概念1.3 树形逻辑结构的应用1.4 结点之间的关系描述1.5 结点、树的属性描述1.6 有序树 vs 无序树1.7 树 vs 森林1.8 知识回顾2. 树的常考性质2.1 常见考点1:结点数=总度数+12.2 知识回顾1. 树的定义和基本术语1.1 知识总览1.2 树的基本概念1.3 树形逻辑结构的应用1.4 结点之间的关系描述1.5 结点、树的属性描述1.6 有序树 vs 无序...原创 2022-01-18 14:13:31 · 211 阅读 · 0 评论 -
5.2 二叉树的定义和基本术语、二叉树的性质、二叉树的存储结构
1. 二叉树的定义和基本术语1.1 知识总览1.2 二叉树的基本概念1.3 二叉树的五种状态1.4 满二叉树 vs 完全二叉树1.5 二叉排序树1.6 平衡二叉树1.7 知识回顾2. 二叉树的性质2.1 二叉树的常考性质2.2 完全二叉树的常考性质2.3 知识回顾3. 二叉树的存储结构3.1 二叉树的顺序存储3.2 二叉树的链式存储3.3 知识回顾1. 二叉树的定义和基本术语1.1 知识总览1.2 二叉树的基本概念1.3 二叉树的五种状态...原创 2022-01-18 14:40:23 · 536 阅读 · 0 评论 -
5.3 二叉树先中后序遍历、层次遍历、由遍历序列构造二叉树
1. 二叉树的先中后序遍历1.1 什么是遍历?1.2 二叉树的遍历1.3 二叉树的遍历(手算练习)1.4 先序遍历(代码)1.5 中序遍历(代码)1.6 后序遍历(代码)1.7 求先序遍历序列1.8 求中序遍历序列1.9 求后序遍历序列1.10 例子:求树的深度(应用)1.11 知识回顾2. 二叉树的层次遍历2.1 二叉树的层序遍历2.2 代码实现2.3 知识回顾3. 由遍历序列构造二叉树3.1 不同二叉树的中序遍历序列3.2 不同二叉树的前序遍历序列...原创 2022-01-18 17:00:00 · 776 阅读 · 0 评论 -
5.4 线索二叉树的概念、二叉树的线索化、线索二叉树中的前驱后继
1. 线索二叉树的概念1.1 知识总览1.2 中序线索二叉树1.3 先序线索二叉树1.4 后序线索二叉树1.5 三种线索二叉树的对比1.6 知识回顾2. 二叉树的线索化2.1 用土办法找到中序前驱2.2 中序线索化2.3 先序线索化2.4 后序线索化2.5 知识回顾3. 在线索二叉树中找前驱后继3.1 知识总览3.2 中序线索二叉树中序后继3.3 中序线索二叉树找中序前驱3.4 先序线索二叉树找先序后继3.5 后序线索二叉树找后序前驱3.6 知识回顾...原创 2022-01-18 19:31:34 · 495 阅读 · 0 评论 -
5.5 树的存储结构、树和森林的遍历
1. 树的存储结构1.1 知识总览1.2 树的逻辑结构1.3 双亲表示法(顺序存储)1.4 孩子表示法(顺序+链式存储)1.5 孩子兄弟表示法(链式存储)1.6 森林和二叉树的转换1.7 知识回顾2. 树和森林的遍历2.1 知识总览2.2 树的逻辑结构2.3 树的先根遍历2.4 树的后跟遍历2.5 树的层次遍历2.6 森林的先序遍历2.7 森林的中序遍历2.8 知识回顾1. 树的存储结构1.1 知识总览1.2 树的逻辑结构1.3 双亲表示法(...原创 2022-01-18 20:55:58 · 146 阅读 · 0 评论 -
5.6 二叉排序树(查找、插入、删除、查找效率分析)
1. 知识总览2. 二叉排序树的定义3. 二叉排序树的查找4. 二叉排序树的插入5. 二叉排序树的构造6. 二叉排序树的删除7. 查找效率分析8. 知识回顾1. 知识总览2. 二叉排序树的定义3. 二叉排序树的查找4. 二叉排序树的插入5. 二叉排序树的构造6. 二叉排序树的删除7. 查找效率分析8. 知识回顾...原创 2022-01-18 21:55:56 · 1567 阅读 · 0 评论 -
5.7 平衡二叉树定义、插入、调整最小不平衡子树(LL、LR、RR、RL)、查找效率分析
1. 知识总览2. 平衡二叉树的定义3. 平衡二叉树的插入4. 调整最小不平衡子树4.1 调整最小不平衡子树(LL)4.2 调整最小不平衡子树(RR)4.3 调整最小不平衡子树(LR)4.4 调整最小不平衡子树(RL)4.5 调整最小不平衡子树(汇总)5 填个坑6. 练习6.1 调整最小不平衡子树(RR)6.2 调整最小不平衡子树(RL)6.3 调整最小不平衡子树(LR)7. 查找效率分析8. 知识回顾1. 知识总览2. 平衡二叉树的定义3. 平...原创 2022-01-18 23:20:28 · 1072 阅读 · 0 评论 -
5.8 哈夫曼树的定义和构造(带权路径长度、可变长度编码、前缀编码、哈夫曼编码)
1. 知识总览2. 带权路径长度3. 哈夫曼树的定义4. 哈夫曼树的构造5. 哈夫曼编码5.1 可变长度编码5.2 前缀编码6. 英文字母频次7. 知识回顾1. 知识总览2. 带权路径长度3. 哈夫曼树的定义4. 哈夫曼树的构造5. 哈夫曼编码5.1 可变长度编码5.2 前缀编码6. 英文字母频次7. 知识回顾...原创 2022-01-18 23:39:53 · 566 阅读 · 0 评论 -
6.1图的定义、无向图、有向图、连通图、强连通图、带权图
1. 知识总览2. 图的定义3. 图逻辑结构的应用4. 无向图、有向图5. 简单图、多重图6. 顶点的度、入度、出度7. 连通图、强连通图8. 研究图的局部–子图9. 连通分量10. 强连通分量11. 生成树12. 生成森林13 边的权、带权图/网14. 几种特殊形态的图15. 知识回顾1. 知识总览2. 图的定义3. 图逻辑结构的应用4. 无向图、有向图5. 简单图、多重图6. 顶点的度、入度、出度7. 连通图、强连通图8. 研究图...原创 2022-01-19 18:10:12 · 19754 阅读 · 1 评论 -
6.2 图的存储(邻接矩阵、邻接表、十字链表、邻接多重表)
0. 知识总览1. 邻接矩阵法1.1 邻接矩阵法存储带权图1.2 邻接矩阵法的性能分析1.3 邻接矩阵法的性质1.4 知识回顾2. 邻接表法2.1 知识总览2.2 邻接表法(顺序+链式存储)2.3 邻接表法2.4 知识回顾3. 十字链表法3.1 知识总览3.2 十字链表存储有向图4. 邻接多重表法4.1 邻接矩阵、邻接表存储无向图4.2 邻接多重表存储无向图4.3 知识回顾0. 知识总览1. 邻接矩阵法1.1 邻接矩阵法存储带...原创 2022-01-19 21:25:13 · 762 阅读 · 0 评论 -
6.3 图的基本操作(增加,删除,查找)
1. 知识总览2. 图的基本操作2.1 判断图的边是否存在2.2 列出图中指定结点的边2.3 在图中插入顶点2.4 在图中删除顶点2.5 图中增加边2.6 获得图中顶点的第一个邻接点2.7 获得图中边的权值2.8 知识总览1. 知识总览2. 图的基本操作2.1 判断图的边是否存在2.2 列出图中指定结点的边2.3 在图中插入顶点2.4 在图中删除顶点2.5 图中增加边2.6 获得图中顶点的第一个邻接点2.7 获得图中边的权值2....原创 2022-01-19 21:42:22 · 472 阅读 · 0 评论 -
6.4 图的广度优先遍历、深度优先遍历
1. 图的广度优先遍历1.1 知识总览1.2 代码实现1.3 广度优先遍历序列1.4 遍历序列的可变性1.5 BFS算法1.6 复杂度分析1.7 广度优先生成树1.8 广度优先生成森林1.9 知识回顾2. 图的深度优先遍历2.1 知识总览2.2 树的深度优先遍历2.3 图的深度优先遍历2.4 DFS算法(Final版)2.5 复杂度分析2.6 深度优先遍历序列2.7 深度优先生成树2.8 深度优先生成森林2.9 图的遍历与图的连通性2.10 知识回顾...原创 2022-01-20 14:23:58 · 469 阅读 · 0 评论 -
6.5 最小生成树(最小代价树、Prim算法、Kruskal算法的实现思想)
1. 知识总览2. 生成树2.1 广度优先生成树2.2 深度优先生成树3. 最小生成树(最小代价树)3.1 Prim算法(普里姆)3.2 Kruskal算法3.3 Prim算法 vs Kruskal算法4. 最小生成树(最小代价树)算法的实现思想4.1 Prim算法的实现思想4.2 Kruskal算法的实现思想5. 知识回顾1. 知识总览2. 生成树2.1 广度优先生成树2.2 深度优先生成树3. 最小生成树(最小代价树)3.1...原创 2022-01-20 16:38:29 · 369 阅读 · 0 评论 -
6.6 最短路径问题(BFS遍历无权图的单源最短路径、Dijkstra最短路径算法、Floyd算法实例)
0. 最短路径问题1. BFS求无权图的单源最短路径1.1 BFS遍历代码实现1.2 BFS查找最短路径代码实现1.3 知识回顾2. Dijkstra最短路径算法2.1 BFS算法的局限性2.2 Dijkstra算法流程2.3 如何使用数组信息?2.4 Dijkstra算法的时间复杂度2.5 Dijkstra算法不适用于有负权值的带权图3. Floyd算法3.1 Floyd算法3.2 Floyd算法核心代码3.3 Floyd算法实例3.4 不能解决的问题3...原创 2022-01-21 18:11:57 · 1768 阅读 · 0 评论 -
6.7 有向无环图表达式、拓扑排序、逆拓扑排序、关键路径
1. 有向无环图(DAG)1.1 DAG描述表达式2. 拓扑排序2.1 AOV网(有向无环图)2.2 拓扑排序2.3 对有回路的图进行拓扑排序2.4 逆拓扑排序2.5 逆拓扑排序的实现(DFS算法)2.6 知识回顾3. 关键路径1. 有向无环图(DAG)1.1 DAG描述表达式2. 拓扑排序2.1 AOV网(有向无环图)2.2 拓扑排序2.3 对有回路的图进行拓扑排序2.4 逆拓扑排序2.5 逆拓扑排序的实现(DFS算法)...原创 2022-01-22 14:07:30 · 567 阅读 · 0 评论 -
7.1 查找的基本概念、顺序查找、折半查找、分块查找(索引顺序查找)
1. 查找的基本概念1.1 知识总览1.2 基本概念1.3 对查找表的常见操作1.4 查找算法的评价指标1.5 知识回顾2. 顺序查找2.1 知识总览2.2 顺序查找的算法思想2.3 顺序查找的实现2.4 查找效率分析2.5 顺序查找的优化2.6 用查找判定树分析ASL2.7 知识回顾3. 折半查找(二分查找)3.1 知识总览3.2 折半查找的实现3.3 查找效率分析3.4 折半查找判定树的构造3.5 知识回顾3.6 拓展思考4. 分块查找...原创 2022-01-22 16:05:29 · 1022 阅读 · 0 评论 -
7.2 B树的定义、查找效率分析、B树的高度、插入和删除
1. B树1.1 回顾:二叉查找树(BST)1.2 5叉查找树1.3 如何查找1.4 如何保证查找效率1.5 B树1.6 B树的高度1.7 知识回顾2. B树的插入和删除2.1 B树的插入2.2 B树的删除2.3 知识回顾1. B树1.1 回顾:二叉查找树(BST)1.2 5叉查找树1.3 如何查找1.4 如何保证查找效率1.5 B树1.6 B树的高度1.7 知识回顾2. B树的插入和删除2.1 B树的插入...原创 2022-01-22 20:44:57 · 538 阅读 · 0 评论 -
7.3 B+树
1. 对比:分块查找2. B+树3. B+树的查找1. 对比:分块查找2. B+树3. B+树的查找原创 2022-02-05 21:43:54 · 54 阅读 · 0 评论 -
7.4 散列查找(散列表、常见的散列函数、除留余数法、直接定址法、数字分析法、平方取中法)
1. 散列表2. 处理冲突的方法(拉链法)3. 散列查找4. 常见的散列函数1. 散列表2. 处理冲突的方法(拉链法)3. 散列查找4. 常见的散列函数原创 2022-02-06 16:17:18 · 399 阅读 · 0 评论 -
7.5 散列查找(开放定址法、线性探测法、平方探测法、伪随机序列法、再散列法)
1. 前情回顾2. 处理冲突的方法(开放定址法)2.1 线性探测法2.2 平方探测法3. 再散列法4. 知识回顾与重要考点1. 前情回顾2. 处理冲突的方法(开放定址法)2.1 线性探测法2.2 平方探测法3. 再散列法4. 知识回顾与重要考点...原创 2022-02-06 17:11:55 · 2575 阅读 · 1 评论 -
8.1 排序的基本概念(时间复杂度、空间复杂度、稳定性、内部排序、外部排序、可视化网站)
1. 什么是排序?2. 排序算法的应用3. 排序算法的评价指标4. 排序算法的分类5. 知识回顾1. 什么是排序?2. 排序算法的应用3. 排序算法的评价指标4. 排序算法的分类5. 知识回顾学习链接...原创 2022-02-06 17:36:07 · 205 阅读 · 0 评论 -
8.2 插入排序(算法实现、效率分析、折半优化)
1. 插入排序2. 算法实现3. 算法效率分析4. 优化(折半插入排序)5. 知识回顾1. 插入排序2. 算法实现3. 算法效率分析4. 优化(折半插入排序)5. 知识回顾原创 2022-02-06 18:06:15 · 1103 阅读 · 0 评论 -
8.3 希尔排序(算法实现、性能分析)
1. 希尔排序2. 第一趟排序3. 第二趟排序4. 第三趟排序5. 算法实现6. 算法性能分析7. 知识总结1. 希尔排序2. 第一趟排序3. 第二趟排序4. 第三趟排序5. 算法实现6. 算法性能分析7. 知识总结...原创 2022-02-06 18:21:54 · 287 阅读 · 0 评论 -
8.4 冒泡排序(交换排序、算法实现、性能分析)
1. 知识总览2. 冒泡排序3. 算法实现4. 算法性能分析5. 知识回顾1. 知识总览2. 冒泡排序3. 算法实现4. 算法性能分析5. 知识回顾原创 2022-02-06 18:27:49 · 308 阅读 · 0 评论 -
8.5 快速排序(交换排序、算法实现、性能分析)
1. 知识总览2. 快速排序3. 算法实现4. 算法效率分析5. 知识回顾1. 知识总览2. 快速排序3. 算法实现4. 算法效率分析5. 知识回顾原创 2022-02-06 18:41:49 · 272 阅读 · 0 评论 -
8.6 简单选择排序(选择排序、算法实现、性能分析)
1. 知识总览2. 简单选择排序3. 算法实现4. 算法性能分析5. 知识回顾1. 知识总览2. 简单选择排序3. 算法实现4. 算法性能分析5. 知识回顾原创 2022-02-06 18:47:55 · 229 阅读 · 1 评论 -
8.7 堆排序(选择排序、算法实现、性能分析)
1. 知识总览2. 什么是堆3. 如何基于堆进行排序?3.1 建立大根堆3.2 基于大根堆进行排序4. 算法效率分析5. 知识回顾1. 知识总览2. 什么是堆3. 如何基于堆进行排序?3.1 建立大根堆3.2 基于大根堆进行排序4. 算法效率分析5. 知识回顾...原创 2022-02-06 19:07:37 · 220 阅读 · 0 评论