第1章 数据结构基础 1
1.1 面式思维和点式思维 1
1.2 数据结构背景 3
1.3 数据结构的应用案例 4
1.4 数据结构基本概念 6
1.5 逻辑结构分类 7
1.6 存储结构分类 7
1.7 数据结构基本操作 9
1.8 算法和算法效率分析基础 10
1.9 数据结构基础程序构建 13
1.10 本章总结 24
习题 25
第2章 递归思想与程序构造 29
2.1 引言 29
2.2 简单递归思想 30
2.3 复杂递归思想 34
2.4 递归思想的程序构建 37
2.5 本章总结 41
习题 42
第3章 线性表的构造与应用 44
3.1 引言 44
3.2 线性表的逻辑结构 44
3.3 线性表的顺序存储 46
3.4 线性表的链接存储 55
3.5 线性表链接存储的变形 64
3.6 线性表存储结构实现的选择标准 66
3.7 线性表的应用案例 66
3.8 线性表应用的程序构造 67
3.9 本章总结 72
习题 73
第4章 排序程序设计初步 76
4.1 引言 76
4.2 排序操作的基本概念 77
4.3 基本排序算法设计 78
4.3.1 排序算法设计基础 78
4.3.2 直接插入排序(Direct Insert Sorting) 79
4.3.3 简单选择排序(Simple Select Sorting) 82
4.3.4 冒泡排序(Bubble Sorting) 84
4.3.5 单链表插入排序(LinkList Insert Sorting) 87
4.3.6 静态链表插入排序(Static Link Insert Sorting) 87
4.4 排序的应用案例 92
4.5 本章总结 92
习题 92
第5章 栈的构造与应用 94
5.1 引言 94
5.2 栈的逻辑结构 94
5.3 栈的顺序存储 95
5.4 栈的链接存储 99
5.5 栈的应用案例 103
5.6 栈应用的程序构建 105
5.7 本章总结 110
习题 111
第6章 队列的构造与应用 116
6.1 引言 116
6.2 队列的逻辑结构 116
6.3 队列的顺序存储 117
6.4 队列的环状顺序存储 118
6.5 队列的链接存储 120
6.6 队列的应用案例 123
6.7 队列应用的程序构建 124
6.8 本章总结 127
习题 127
第7章 串的构造与应用 129
7.1 引言 129
7.2 串的逻辑结构 129
7.3 串的顺序存储 132
7.4 串的链接存储 137
7.5 串的索引存储 137
7.6 串的应用案例 146
7.7 串应用的程序构建 147
7.8 本章总结 149
习题 149
第8章 二维数组的构造与应用 151
8.1 引言 151
8.2 二维数组的逻辑结构 151
8.3 二维数组的顺序存储 152
8.4 特殊矩阵的压缩存储 153
8.5 稀疏矩阵的压缩存储 155
8.6 稀疏矩阵的十字链表存储 164
8.7 二维数组的应用案例 165
8.8 二维数组应用的程序构建 168
8.9 本章总结 174
习题 175
第9章 广义表的构造与应用 177
9.1 引言 177
9.2 广义表的逻辑结构 177
9.3 广义表的链接存储 180
9.4 广义表应用的程序构造 182
9.5 本章总结 186
习题 186
第10章 树和森林的构造与应用 188
10.1 引言 188
10.2 树的逻辑结构 188
10.3 树的顺序存储 191
10.4 树的链接存储 192
10.5 树的顺序和链接联合存储法 192
10.6 树的应用案例 194
10.7 本章总结 196
习题 196
第11章 二叉树的构造与应用 197
11.1 引言 197
11.2 二叉树的逻辑结构 197
11.3 二叉树的顺序存储 199
11.4 二叉树的链接存储 200
11.5 二叉树其他相关程序构造 201
11.6 二叉树的根序遍历程序构造 209
11.6.1 根序遍历的定义和递归算法实现 209
11.6.2 根序遍历的非递归算法实现 211
11.7 二叉树的层次遍历程序构造 214
11.8 线索二叉树程序构造 215
11.8.1 线索二叉树的定义、逻辑结构及存储结构 215
11.8.2 线索二叉树的算法设计 216
11.9 二叉树的应用案例 219
11.10 树、森林和二叉树的关系 227
11.11 二叉树应用的程序构建 228
11.12 本章总结 237
习题 237
第12章 图的构造与应用 240
12.1 引言 240
12.2 图的逻辑结构 240
12.3 图的顺序存储 244
12.4 图的链接存储 251
12.5 遍历操作的程序设计 258
12.6 公路网最短路径的研究 265
12.7 AOV网与拓扑排序的研究 270
12.8 图应用的程序构建 274
12.8.1 最小生成树的定义 278
12.8.2 构造最小生成树的Prim算法 278
12.8.3 构造最小生成树的Kruskal算法 282
12.9 本章总结 287
习题 287
第13章 查找程序设计 290
13.1 引言 290
13.2 查找的基本概念 290
13.3 基于静态数据结构的查找 291
13.3.1 静态查找表与顺序查找 291
13.3.2 有序表的折半查找 294
13.3.3 有序表的斐波那契查找和插值查找 297
13.3.4 分块查找 298
13.4 基于动态数据结构的查找 299
13.4.1 二叉排序树与相应的查找技术 299
13.4.2 平衡二叉树 300
13.5 基于哈希表结构的查找 304
13.5.1 哈希表的定义和构成 304
13.5.2 常见的哈希函数 306
13.5.3 哈希表的查找过程和冲突解决方法 307
13.6 基于字符串结构的快速查找 312
13.7 查找的应用案例 316
13.8 查找应用的程序构建 317
13.9 本章总结 320
习题 320
第14章 排序程序设计进阶 322
14.1 引言 322
14.2 折半插入排序技术 323
14.3 希尔排序技术 324
14.4 快速排序技术 326
14.5 树形选择排序技术 328
14.6 堆排序技术 329
14.7 归并排序技术 332
14.8 基数排序技术 333
14.9 本章总结 338
习题 338
第15章 文件结构初步 340
15.1 引言 340
15.2 文件的逻辑结构 340
15.3 顺序文件 342
15.4 索引文件 343
15.5 索引顺序存取方法文件 345
15.6 虚拟存储存取方法文件 346
15.7 直接存取文件(散列文件) 348
15.8 多重表文件和倒排文件 349
15.9 文件的应用案例 351
15.10 歌曲文件处理的程序构建 351
15.11 本章总结 362
习题 362
参考文献 364