目录 1
第1章 绪论 1
1.1 常用术语 1
1.2 算法描述 14
1.3 算法评价 17
1.3.1 正确性 17
1.3.2 健壮性 17
1.3.3 可读性 17
1.3.4 时间复杂度 18
1.3.5 空间复杂度 23
本章小结 25
习题1 25
第2章 集合 33
2.1 集合的定义和运算 33
2.1.1 集合的定义 33
2.1.2 集合的抽象数据类型 33
2.1.3 集合运算举例 35
2.2 集合的顺序存储结构和操作实现 36
2.3 集合的链接存储结构和操作实现 45
本章小结 53
习题2 54
第3章 线性表 59
3.1 线性表的定义和抽象数据类型 59
3.1.1 线性表的定义 59
3.1.2 线性表的抽象数据类型 60
3.2 线性表的顺序存储结构和操作实现 61
3.3 线性表的链接存储结构和操作实现 70
3.4 线性表的其他链接存储结构 75
3.5 线性表应用举例——多项式计算 79
3.6 广义表 88
3.6.1 广义表的定义 88
3.6.2 广义表的存储结构 90
3.6.3 广义表的运算 92
本章小结 93
习题3 94
4.1.1 栈的定义 99
第4章 栈和队列 99
4.1 栈 99
4.1.2 栈的抽象数据类型 100
4.2 栈的顺序存储结构和操作实现 101
4.3 栈的链接存储结构和操作实现 106
4.4 栈的简单应用举例 109
4.5 算术表达式的计算 114
4.5.1 算术表达式的两种表示 114
4.5.2 后缀表达式求值的算法 115
4.5.3 把中缀表达式转换为后缀表达式的算法 118
4.6 栈与递归 122
4.7 队列 132
4.7.1 队列的定义 132
4.7.2 队列的抽象数据类型 132
4.7.3 队列的顺序存储结构和操作实现 133
4.7.4 队列的链接存储结构和操作实现 139
4.7.5 队列的应用简介 142
习题4 143
本章小结 143
第5章 树和二叉树 151
5.1 树的概念 151
5.1.1 树的定义 151
5.1.2 树的表示 153
5.1.3 树的基本术语 153
5.1.4 树的性质 155
5.2.1 二叉树的定义 156
5.2 二叉树 156
5.2.2 二叉树的性质 157
5.2.3 二叉树的抽象数据类型 159
5.2.4 二叉树的存储结构 160
5.3 二叉树遍历 163
5.4 二叉树其他运算 167
5.5 树的存储结构和运算 172
5.5.1 树的抽象数据类型 172
5.5.2 树的存储结构 173
5.5.3 树的运算 176
本章小结 181
习题5 182
第6章 二叉树的应用 191
6.1 二叉搜索树 191
6.1.1 二叉搜索树的定义 191
6.1.2 二叉搜索树的抽象数据类型 192
6.1.3 二叉搜索树的运算 192
6.2.1 堆的定义 200
6.2.2 堆的抽象数据类型 200
6.2 堆 200
6.2.3 堆的存储结构 201
6.2.4 堆的运算 202
6.3 哈夫曼树 208
6.3.1 基本术语 208
6.3.2 构造哈夫曼树 210
6.3.3 哈夫曼编码 212
本章小结 215
习题6 215
7.1.1 图的定义 219
第7章 图 219
7.1 图的概念 219
7.1.2 图的基本术语 220
7.2 图的存储结构 223
7.2.1 邻接矩阵 223
7.2.2 邻接表 226
7.2.3 边集数组 229
7.3 图的遍历 230
7.3.1 深度优先搜索遍历 230
7.3.2 广度优先搜索遍历 233
7.3.3 非连通图的遍历 236
7.4 图的生成树和最小生成树 236
7.4.1 普里姆算法 238
7.4.2 克鲁斯卡尔算法 242
7.5 拓扑排序 245
本章小结 250
习题7 251
8.1 查找的基本概念 255
第8章 查找 255
8.2 顺序表查找 256
8.2.1 顺序查找 257
8.2.2 二分查找 258
8.3 索引查找 262
8.3.1 索引的概念 262
8.3.2 索引查找算法 265
8.3.3 分块查找 267
8.4.1 散列的概念 269
8.4 散列查找 269
8.4.2 散列函数 271
8.4.3 处理冲突的方法 274
8.4.4 散列表的运算 278
8.5 B树查找 284
8.5.1 B_树的定义 284
8.5.2 B_树查找 286
8.5.3 B_树的插入 288
8.5.4 B_树的删除 289
8.5.5 B+树简介 293
本章小结 294
习题8 295
第9章 排序 301
9.1 排序的基本概念 301
9.2 选择排序 303
9.2.1 直接选择排序 303
9.2.2 堆排序 304
9.3.1 气泡排序 309
9.3 交换排序 309
9.3.2 快速排序 311
9.4 归并排序 314
9.5 各种内排序方法的比较 318
9.6 外排序 319
本章小结 329
习题9 330
附录A 部分算法设计题参考解答 333
参考文献 347