上篇 1
第1章 绪论 1
1.1 数据结构的基本概念和术语 1
1.2 数据类型 4
1.3 算法与算法分析 5
习题 8
第2章 线性表 10
2.1 线性表的定义与运算 10
2.2 线性表的顺序存储 11
2.3 线性表的链式存储 18
2.4 线性表的应用 41
习题 44
第3章 栈和队列 48
3.1 栈 48
3.2 队列 63
习题 73
第4章 串 76
4.1 串的基本概念 76
4.2 串的基本操作 76
4.3 串的存储结构 77
4.4 串的模式匹配 80
习题 86
第5章 数组与广义表 90
5.1 数组的定义 90
5.2 数组的顺序表示和实现 91
5.3 矩阵的压缩存储 95
5.4 广义表 102
习题 111
第6章 树与二叉树 112
6.1 树的基本概念 112
6.2 二叉树 114
6.3 二叉树的遍历及应用 118
6.4 线索二叉树 128
6.5 树与森林 133
6.6 哈夫曼树及其应用 138
习题 145
第7章 图 148
7.1 图的基本概念 148
7.2 图的存储结构 149
7.3 图的遍历 154
7.4 生成树 159
7.5 最短路径 164
7.6 拓扑排序 170
7.7 图的应用 175
习题 183
第8章 查找 185
8.1 查找表的基本概念 185
8.2 静态查找表 186
8.3 动态查找表 190
8.4 哈希表 204
习题 209
第9章 排序 211
9.1 排序的基本概念 211
9.2 插入排序 212
9.3 交换排序 219
9.4 选择排序 223
9.5 归并排序 228
9.6 基数排序 230
9.7 外部排序 235
习题 239
第10章 文件 243
10.1 文件的基本概念 243
10.2 顺序文件 245
10.3 索引文件 246
10.4 索引顺序文件 248
10.5 散列文件 253
10.6 多关键字文件 253
习题 256
下篇 257
第11章 分治法 257
11.1 分治法的基本思想 257
11.2 二分搜索技术 259
11.3 大整数的乘法 260
11.4 Strassen矩阵乘法 261
11.5 棋盘覆盖 262
11.6 合并排序 265
11.7 快速排序 267
11.8 找最大和最小元素 269
习题 272
第12章 动态规划法 273
12.1 矩阵连乘问题 273
12.2 动态规划法算法的基本要素 277
12.3 最长公共子序列问题 281
12.4 最大子段和问题 284
12.5 凸多边形最优三角剖分 290
12.6 多边形游戏 293
12.7 图形压缩 296
12.8 电路布线 299
12.9 流水作业调度 301
12.10 0-1背包问题 304
12.11 最优二叉搜索树 309
习题 312
第13章 贪心法 314
13.1 贪心法的基本思想 314
13.2 活动安排问题 316
13.3 背包问题 319
13.4 最优装载问题 322
13.5 多机调度问题 323
习题 325
第14章 回溯法 326
14.1 回溯法的基本思想 326
14.2 n皇后问题 331
14.3 图的着色问题 335
14.4 0-1背包问题 339
习题 344
第15章 分支限界法 346
15.1 分支限界法的基本思想 346
15.2 旅行推销员问题 349
15.3 单源最短路径问题 356
15.4 布线问题 359
15.5 0-1背包问题 364
15.6 装载问题 369
习题 377
参考文献 379