第1章 绪论 1
1.1 数据结构的实践意义 1
1.2 数据结构的理论意义 4
1.3 数据结构研究的内容和关键问题 5
习题 6
第2章 线性表 10
2.1 线性表的概念及抽象数据类型定义 10
2.2 线性表的顺序存储 12
2.3 线性表的链式存储 18
2.4 线性表的应用——一元多项式的表示及相加 32
2.5 顺序表与链表的综合比较 35
习题 36
第3章 栈和队列 39
3.1 栈 40
3.2 队列 47
习题 53
第4章 串 57
4.1 串的定义与操作 57
4.2 串的存储结构及操作 60
4.3 串操作应用举例 66
习题 70
第5章 数组和广义表 72
5.1 数组的定义 72
5.2 数组的顺序表示和实现 73
5.3 矩阵的压缩存储 76
5.4 广义表 89
习题 93
第6章 树 100
6.1 树的定义、操作及基本术语 100
6.2 二叉树 103
6.3 遍历二叉树和线索二叉树 109
6.4 树和森林 116
6.5 哈夫曼树及其应用 123
习题 128
第7章 图 131
7.1 图定义和术语 131
7.2 图的存储结构 135
7.3 图的遍历 141
7.4 图的连通性 143
7.5 有向无环图及其应用 149
7.6 最短路径 155
习题 160
第8章 查找 163
8.1 查找的基本概念 163
8.2 静态查找表 164
8.3 动态查找表 171
8.4 哈希表 182
习题 193
第9章 排序 195
9.1 概述 195
9.2 插入排序 197
9.3 交换排序 200
9.4 选择排序 204
9.5 归并排序 209
9.6 外部排序简介 211
习题 211
第10章 文件 214
10.1 基本概念 214
10.2 顺序文件 215
10.3 索引文件 216
10.4 ISAM文件和VSAM文件 217
10.5 直接存取文件(散列文件) 219
习题 219
第11章 算法设计策略 223
11.1 分而治之(Divide and Conqure Algorithm) 223
11.2 贪心算法(Greedy Algorithm) 224
11.3 动态规划算法(Dynamic Programming) 226
11.4 状态搜索策略(State Search) 226
11.5 回溯算法(Backtraking Algorithm) 228
11.6 随机算法(Random Algorithm) 232
11.7 算法设计中关键与技巧 234
习题 239
参考文献 240