第1章 概论 1
1.1 什么是数据结构 1
1.1.1 为什么要学习数据结构 2
1.1.2 数据结构课程的内容 4
1.2 基本概念和术语 5
1.2.1 数据 5
1.2.2 数据元素 6
1.2.3 数据对象 6
1.2.4 数据结构 6
1.3 算法与性能分析 8
1.3.1 算法概念及特点 8
1.3.2 算法的设计要求 9
1.3.3 算法的性能分析 10
习题1 13
第2章 线性表 15
2.1 线性表的定义及基本运算 15
2.1.1 线性表的定义与逻辑结构 15
2.1.2 线性表的基本运算 16
2.2 线性表的顺序存储结构及其算法实现 17
2.2.1 线性表的顺序存储结构 17
2.2.2 顺序表的基本运算 18
2.3 线性表的链式存储结构及其算法实现 22
2.3.1 单链表 22
2.3.2 双向链表 27
2.3.3 循环链表 29
2.4 顺序表和链表的比较 30
2.5 线性表的应用举例和分析 31
习题2 34
真题在线2 37
第3章 栈和队列 39
3.1 栈 39
3.1.1 栈的概念及基本运算 39
3.1.2 栈的顺序存储结构及其算法实现 40
3.1.3 栈的链式存储结构及其算法实现 42
3.2 队列 44
3.2.1 队列的概念及基本运算 44
3.2.2 队列的顺序存储结构及其算法实现 45
3.2.3 队列的链式存储结构及其算法实现 49
3.3 栈和队列的应用举例和分析 50
3.3.1 栈的应用实例 50
3.3.2 队列的应用实例 55
习题3 56
真题在线3 59
第4章 串 65
4.1 串的定义及基本运算 65
4.1.1 串的基本概念及术语 65
4.1.2 串的基本算法实现 66
4.2 串的存储结构及其算法实现 67
4.2.1 顺序串 67
4.2.2 链串 69
4.3 串的应用举例——串的模式匹配 72
习题4 74
真题在线4 75
第5章 数组与广义表 82
5.1 数组 82
5.1.1 数组的定义及基本运算 82
5.1.2 数组的顺序存储结构 82
5.1.3 数组的应用举例 84
5.2 矩阵的压缩存储 86
5.2.1 对称矩阵 86
5.2.2 三角矩阵 86
5.2.3 对角矩阵 87
5.3 稀疏矩阵 88
5.3.1 稀疏矩阵的三元组顺序表 88
5.3.2 稀疏矩阵的十字链表存储结构 90
5.4 广义表 91
5.4.1 广义表的概念 91
5.4.2 广义表的存储结构 92
5.4.3 广义表的基本运算 93
习题5 94
真题在线5 96
第6章 树 100
6.1 树的定义及基本运算 102
6.1.1 树的递归定义 102
6.1.2 树的表示形式 102
6.1.3 树的相关术语 104
6.1.4 树形结构的逻辑特征 106
6.1.5 树的抽象数据类型及基本运算 106
6.2 二叉树 108
6.2.1 二叉树的定义 108
6.2.2 二叉树的性质 109
6.2.3 二叉树的存储结构 113
6.3 二叉树的遍历 117
6.3.1 二叉树遍历的方法 117
6.3.2 复杂度分析 123
6.4 线索二叉树 126
6.4.1 基本概念 126
6.4.2 二叉树的线索化 127
6.4.3 线索二叉树中的运算 129
6.5 树和森林 131
6.5.1 树的存储结构 131
6.5.2 树、森林与二叉树的转换 134
6.5.3 树与森林的遍历 137
6.6 哈夫曼树及其应用 139
6.6.1 哈夫曼树的概念 139
6.6.2 哈夫曼树的应用 141
习题6 145
真题在线6 150
第7章 图 155
7.1 图的定义及基本操作 155
7.1.1 图的定义及分类 155
7.1.2 图的基本操作 156
7.2 图的存储结构 157
7.2.1 邻接矩阵存储表示及其算法实现 158
7.2.2 邻接链表存储表示及其算法实现 160
7.3 图的遍历 164
7.3.1 深度优先搜索算法 164
7.3.2 广度优先搜索算法 166
7.4 图的连通性、生成树和最小生成树 168
7.4.1 图的连通性 168
7.4.2 生成树 169
7.4.3 最小生成树 171
7.5 图的应用 175
7.5.1 最短路径问题 175
7.5.2 拓扑排序和关键路径 179
习题7 184
真题在线7 187
第8章 查找 189
8.1 查找的基本概念 189
8.2 静态查找表 191
8.2.1 顺序查找 191
8.2.2 折半查找 193
8.2.3 分块查找 195
8.3 动态查找表 198
8.3.1 二叉排序树 198
8.3.2 平衡二叉树 206
8.3.3 B—树用于外部查找 210
8.4 哈希表 212
8.4.1 哈希表的定义 212
8.4.2 哈希函数的构造方法 213
8.4.3 处理冲突的方法 216
8.4.4 哈希表的查找与分析 219
习题8 222
真题在线8 225
第9章 排序 230
9.1 基本概念 230
9.2 插入排序 232
9.2.1 直接插入排序 232
9.2.2 希尔排序 234
9.3 交换排序 237
9.3.1 冒泡排序 237
9.3.2 快速排序 239
9.4 选择排序 242
9.4.1 直接选择排序 242
9.4.2 堆排序 244
9.5 归并排序 250
9.6 基数排序 252
9.7 各种排序算法的比较讨论 254
习题9 255
真题在线9 257
附录 参考答案 259
参考文献 282