第一章 绪论 1
1.1 算法和数据结构 1
1.2 算法描述语言 5
1.3 用程序求解问题 9
1.4 算法的运行时间分析 14
1.5 算法的运行时间计算 18
习题 21
第二章 基本抽象数据类型——线性表 23
2.1 线性表 23
2.2 线性表的顺序实现 25
2.3 线性表的非顺序实现——单链表 30
2.4 可用空间表和单链表的基本操作 35
2.5 多项式加法和循环单链表 41
2.6 双链表 48
2.7 动态存贮管理 51
习题 60
第三章 栈、队列和广义表 62
3.1 栈 62
3.2 队列 69
3.3 表达式求值 75
3.4 等价关系 81
3.5 广义表 85
3.6 递归算法和递归调用的处理 88
3.7 无用单元的收集与集中 92
习题 99
第四章 串和集合 101
4.1 串 101
4.2 集合和集合基本表示方法 109
4.3 字典 115
4.4 哈希表 117
4.5 关于哈希方法的讨论 126
习题 129
第五章 树 131
5.1 树的基本概念和术语 131
5.2 树的实现和遍历 133
5.3 关于树实现方法的讨论 137
5.4 二叉树 142
5.5 二叉树实现方法和遍历 145
习题 150
第六章 集合的树形结构表示方法 151
6.1 偏序树 151
6.2 二叉检索树 154
6.3 二叉检索树的检索时间分析和平衡树 158
6.4 B树 165
习题 170
第七章 图 171
7.1 图的基本概念及术语 171
7.2 图的实现和抽象数据类型 173
7.3 图的遍历和连通分量 179
7.4 生成树 182
7.5 有向网络的最短路径问题 187
7.6 有向无回路图及其应用 193
习题 203
第八章 内部排序 206
8.1 插入排序 206
8.2 希尔排序 210
8.3 选择排序 214
8.4 堆阵排序 217
8.5 快速排序 221
8.6 合并排序 228
8.7 基数排序 231
习题 237
第九章 外部排序 239
9.1 外存设备简介 239
9.2 多路合并排序 243
9.3 多步合并排序 249
9.4 初始有序段 256
习题 265
第十章 算法设计技术 266
10.1 分治法设计技术 266
10.2 动态设计法设计技术 271
10.3 贪心法设计技术 277
10.4 回溯法设计技术 281
10.5 局部搜索法设计技术 284
习题 288