第1章 绪论 1
1.1 数据结构课程的研究内容 1
1.2 基本概念及术语 2
1.3 算法与算法分析 5
1.3.1 算法 5
1.3.2 算法分析 8
本章小结 10
习题1 11
上机实验题1 12
第2章 线性表 13
2.1 线性表的基本概念 13
2.2 线性表的存储结构 14
2.2.1 顺序存储结构 14
2.2.2 链式存储结构 15
2.3 线性表的操作算法 18
2.3.1 顺序表的操作算法 18
2.3.2 链表的操作算法 23
2.4 线性表的应用 33
2.5 顺序表和链表的综合比较 38
本章小结 39
习题2 39
上机实验题2 40
第3章 栈和队列 41
3.1 栈 41
3.1.1 栈的基本概念 41
3.1.2 栈的存储结构 41
3.1.3 栈的操作算法 43
3.1.4 栈的应用 47
3.2 队列 54
3.2.1 队列的基本概念 54
3.2.2 队列的存储结构 54
3.2.3 队列的操作算法 56
3.2.4 队列的应用 59
本章小结 60
习题3 60
上机实验题3 61
第4章 串 62
4.1 串的基本概念 62
4.2 串的存储结构 62
4.2.1 串的顺序存储结构 62
4.2.2 串的链式存储结构 63
4.3 串的操作算法 64
4.3.1 串的基本操作算法 64
4.3.2 串的模式匹配 65
4.3.3 串的应用 71
本章小结 73
习题4 73
上机实验题4 74
第5章 数组和特殊矩阵 75
5.1 数组 75
5.1.1 数组的基本概念 75
5.1.2 数组的存储结构 76
5.2 特殊矩阵的压缩存储 77
5.2.1 对称矩阵的压缩存储 77
5.2.2 三角矩阵的压缩存储 78
5.2.3 对角矩阵的压缩存储 79
5.2.4 稀疏矩阵的压缩存储 79
本章小结 85
习题5 86
上机实验题5 86
第6章 广义表 87
6.1 广义表的概念 87
6.2 广义表的存储结构 88
6.2.1 广义表中结点的结构 88
6.2.2 广义表的存储结构 89
6.3 广义表的操作算法 91
6.3.1 构造算法 91
6.3.2 遍历广义表 92
6.3.3 广义表的其他操作算法 93
本章小结 96
习题6 97
上机实验题6 97
第7章 树和二叉树 98
7.1 树的概念和性质 98
7.1.1 树的定义 98
7.1.2 树的基本术语 100
7.1.3 树的基本性质 101
7.2 二叉树的概念和性质 102
7.2.1 二叉树的定义 102
7.2.2 二叉树的基本性质 103
7.3 二叉树的存储结构 105
7.3.1 二叉树的顺序存储结构 105
7.3.2 二叉树的链式存储结构 107
7.4 二叉树的遍历 110
7.4.1 二叉树遍历的概念 111
7.4.2 二叉树遍历算法 114
7.4.3 二叉树的构造和析构算法 117
7.5 二叉树的其他操作算法 123
7.6 线索二叉树 126
7.6.1 线索二叉树的概念 126
7.6.2 线索二叉树的存储结构 128
7.6.3 线索二叉树的操作算法 129
7.7 树的存储结构与算法 134
7.7.1 树的存储结构 134
7.7.2 树的操作算法 140
7.8 Huffman树与Huffman编码 145
7.8.1 Huffman树的定义 145
7.8.2 Huffman树的构造 147
7.8.3 Huffman编码算法 150
7.8.4 Huffman译码算法 151
7.8.5 Huffman树的其他应用——程序设计流程优化 152
7.9 等价类问题 154
7.9.1 等价类问题 154
7.9.2 等价类的实现 155
7.9.3 性能分析与改进 156
本章小结 158
习题7 158
上机实验题7 160
第8章 图 161
8.1 图的基本概念 161
8.1.1 图的定义 161
8.1.2 图的基本术语 162
8.2 图的存储结构 166
8.2.1 邻接矩阵表示法 166
8.2.2 邻接表表示法 170
8.3 图的遍历 173
8.3.1 图遍历的概念 173
8.3.2 深度优先搜索 173
8.3.3 广度优先搜索 175
8.3.4 图遍历算法的应用 177
8.4 最小生成树 180
8.4.1 最小生成树的概念及其性质 180
8.4.2 Prim算法 182
8.4.3 Kruskal算法 185
8.5 最短路径 188
8.5.1 最短路径的概念 188
8.5.2 单源最短路径 188
8.5.3 每对顶点之间的最短路径 193
8.6 AOV网与拓扑排序 196
8.6.1 有向无环图与AOV网的概念 196
8.6.2 拓扑排序 197
8.7 AOE网与关键路径 201
8.7.1 AOE网的概念 201
8.7.2 关键路径 201
本章小结 203
习题8 204
上机实验题8 205
第9章 查找 206
9.1 查找的基本概念 206
9.2 顺序表的查找 207
9.2.1 顺序查找 207
9.2.2 折半查找 209
9.2.3 分块查找 212
9.3 树表的查找 213
9.3.1 二叉排序树 214
9.3.2 平衡二叉树 220
9.3.3 B树 224
9.3.4 B+树 230
9.4 Hash查找 231
9.4.1 Hash查找的基本概念 231
9.4.2 Hash表的构造 232
9.4.3 Hash查找算法及分析 236
本章小结 238
习题9 238
上机实验题9 239
第10章 排序 241
10.1 排序的基本概念 241
10.2 冒泡排序 242
10.3 选择排序 244
10.4 插入排序 245
10.4.1 直接插入排序 245
10.4.2 折半插入排序 247
10.5 希尔排序 248
10.6 快速排序 249
10.7 堆排序 252
10.8 归并排序 257
10.8.1 二路归并排序的非递归实现 258
10.8.2 二路归并排序的递归实现 260
10.9 基数排序 261
10.9.1 多关键字排序 262
10.9.2 链式基数排序 262
本章小结 264
习题10 266
上机实验题10 267
附录 268
附录A数据结构试题 268
A.1 数据结构试题A 268
A.2 数据结构试题B 268
A.3 数据结构试题C 270
A.4 数据结构试题D 271
A.5 数据结构试题E 275
A.6 数据结构试题F 276
附录B数据结构课程设计题 278
参考文献 280