第1章 绪论 1
1.1 抽象数据类型的表示与实现 1
1.2 算法和算法分析 7
第2章 线性表 9
2.1 线性表的类型定义 9
2.2 线性表的顺序表示和实现 10
2.3 线性表的链式表示和实现 20
2.3.1 线性链表 20
2.3.2 循环链表 41
2.3.3 双向链表 45
第3章 栈和队列 52
3.1 栈 52
3.2 栈的应用举例 55
3.2.1 数制转换 55
3.2.2 行编辑程序 56
3.2.3 迷宫求解 58
3.2.4 表达式求值 63
3.3 栈与递归的实现 67
3.4 队列 69
3.4.1 链队列——队列的链式表示和实现 69
3.4.2 循环队列——队列的顺序表示和实现 74
第4章 串 79
4.1 串类型的定义 79
4.2 串的表示和实现 80
4.2.1 定长顺序存储表示 80
4.2.2 堆分配存储表示 86
4.3 串的模式匹配算法 91
4.3.1 求子串位置的定位函数Index(S,T,pos) 91
4.3.2 模式匹配的一种改进算法 91
第5章 数组和广义表 95
5.1 数组的顺序表示和实现 95
5.2 矩阵的压缩存储 99
5.3 广义表的定义 112
5.4 广义表的存储结构 113
5.5 广义表的递归算法 114
第6章 树和二叉树 126
6.1 二叉树 126
6.2 遍历二叉树和线索二叉树 145
6.2.1 遍历二叉树 145
6.2.2 线索二叉树 146
6.3 树和森林 154
6.4 赫夫曼树及其应用 163
6.4.1 最优二叉树(赫夫曼树) 163
6.4.2 赫夫曼编码 164
第7章 图 170
7.1 图的存储结构 170
7.1.1 数组表示法 170
7.1.2 邻接表 185
7.2 图的遍历 198
7.2.1 深度优先搜索 198
7.2.2 广度优先搜索 199
7.3 图的连通性问题 205
7.3.1 无向图的连通分量和生成树 205
7.3.2 最小生成树 209
7.3.3 关节点和重连通分量 214
7.4 有向无环图及其应用 219
7.4.1 拓扑排序 219
7.4.2 关键路径 222
7.5 最短路径 227
7.5.1 从某个源点到其余各顶点的最短路径 227
7.5.2 每一对顶点之间的最短路径 230
第8章 查找 240
8.1 静态查找表 240
8.1.1 顺序表的查找 240
8.1.2 有序表的查找 244
8.1.3 静态树表的查找 246
8.2 动态查找表 248
8.2.1 二叉排序树和平衡二叉树 248
8.2.2 B-树和B+树 266
8.2.3 键树 273
8.3 哈希表 285
8.3.1 处理冲突的方法 285
8.3.2 哈希表的查找及其分析 285
第9章 内部排序 291
9.1 概述 291
9.2 插入排序 291
9.2.1 直接插入排序 291
9.2.2 其他插入排序 295
9.2.3 希尔排序 299
9.3 快速排序 301
9.4 选择排序 304
9.5 归并排序 309
9.6 基数排序 310
9.7 各种内部排序方法的比较讨论 316
第10章 外部排序 317
10.1 外部排序的方法 317
10.2 多路平衡归并的实现 319
10.3 置换-选择排序 324
附录A 关于标准C程序 332
参考文献 335