第一章 绪论 1
1.1 什么是数据结构 1
前言页 1
1.2 基本术语 3
1.3 数据结构的发展简史及它在计算机科学中所处的地位 4
1.4 关于算法的描述和算法分析的说明 5
2.1 战性表及其基本运算 10
2.1.1 逻辑结构定义 10
第二章 线性表 10
2.1.2 对线性表进行的运算 11
2.2 线性表的顺序存储结构 12
2.3 线性表的链式存储结构 17
2.3.1 线性链表 17
2.3.2 循环链表 25
2.3.3 双向链表 25
2.4 一元多项式的表示及相加 28
2.5 等价问题的求解 31
3.1.1 栈的定义及其运算 35
3.1 栈 35
第三章 栈和队列 35
3.1.2 栈的存储结构 37
3.2 表达式求值 41
3.3 栈与递归过程 44
3.3.1 递归过程及其实现 44
3.3.2 递归过程的模拟 49
3.4 队列 58
3.4.1 队列的定义及其基本运算 58
3.4.2 链队列--队列的链式存储结构 60
3.4.3 队列的顺序存储结构 62
3.5 一个利用队列的模拟程序例子 65
第四章 串 72
4.1 串及其运算 72
4.1.1 什么是串 72
4.1.2 串的基本运算 73
4.2 串的存储结构 75
4.2.1 串值--字符序列的存储 75
4.2.2 串名的存储映象 77
4.3.1 从串名直接访问其值时的串运算 79
4.3 串的基本运算的实现 79
4.3.2 模式匹配的一种改进算法 84
4.3.3 从串名存储映象访问串值时的串运算 88
4.4 文本编辑 91
第五章 数组和广义表 94
5.1 数组的定义和运算 94
5.2 数组的顺序存储结构 96
5.3 矩阵的压缩存储 98
5.3.1 特殊矩阵 98
5.3.2 稀疏矩阵 100
5.4 广义表的定义 110
5.5 广义表的存储结构 111
5.6 m元多项式的表示 113
5.7 广义表的递归算法 115
5.7.1 求广义表的深度 116
5.7.2 复制广义表 117
5.7.3 建立广义表的存储结构 118
第六章 树和二叉树 120
6.1 树的基本定义和运算 120
6.2.1 定义与基本运算 123
6.2 二叉树 123
6.2.2 二叉树的性质 124
6.2.3 二叉树的存储结构 127
6.3 遍历二叉树和线索二叉树 128
6.3.1 遍历二叉树 128
6.3.2 线索二叉树 132
6.4 树和森林 137
6.4.1 树的存储结构 137
6.4.2 森林与二叉树的转换 139
6.4.3 树的遍历 141
6.5 树与等价问题 142
6.6 哈夫曼树及其应用 146
6.6.1 最优二叉树(哈夫曼树) 146
6.6.2 哈夫曼编码 149
6.7 博弈树 153
6.8 树的计数 160
第七章 图 166
7.1 图的定义和术语 166
7.2 图的存储结构 170
7.2.1 数组表示法 172
7.2.2 邻接表 174
7.2.3 十字链表 175
7.2.4 邻接多重表 178
7.3 图的遍历 179
7.3.1 深度优先搜索 180
7.3.2 广度优先搜索 182
7.4 图的连通性问题 183
7.4.1 无向图的连通分量和生成树 183
7.4.2 有向图的强连通分量 185
7.4.3 最小生成树 186
7.4.4 关节点和重连通分量 190
7.5 有向无环图及其应用 193
7.5.1 拓扑排序 195
7.5.2 关键路径 200
7.6 最短路径 203
7.6.1 从某个源头到其余各点的最短路径 204
7.6.2 每一对顶点之间的最短路径 207
7.7 二部图与图匹配 209
第八章 动态存储管理 215
8.1 概述 215
8.2 可利用空间表及分配方法 217
8.3 边界标识法 221
8.3.1 可利用空间表的结构 221
8.3.2 分配算法 222
8.3.3 回收算法 225
8.4 伙伴系统 228
8.4.1 可利用空间表的结构 228
8.4.2 分配算法 229
8.4.3 回收算法 231
8.5 无用单元收集 232
8.6 存储紧缩 238
第九章 查找 241
9.1 顺序表的查找 242
9.1.1 顺序查找 242
9.1.2 折半查找 244
9.1.3 分块查找 248
9.2 树表的查找 250
9.2.1 二叉排序树和二叉平衡树 250
9.2.2 B-树和B+树 263
9.2.3 键树 274
9.3.1 什么是哈希表 279
9.3 哈希表及其查找 279
9.3.2 哈希函数的构造方法 282
9.3.3 处理冲突的方法 286
9.3.4 哈希表的查找及其分析 288
第十章 内部排序 292
10.1 概述 292
10.2 插入排序 293
10.2.1 直接插入排序 293
10.2.2 其它插入排序 295
10.2.3 希尔排序 297
10.3 快速排序 299
10.4 选择排序 303
10.4.1 简单选择排序 303
10.4.2 树形选择排序 305
10.4.3 堆排序 305
10.5 归并排序 310
10.6 基数排序 312
10.7 各种内部排序方法的比较讨论 316
11.1 外存信息的存取 319
第十一章 外部排序 319
11.2 外部排序的方法 322
11.3 多路平衡归并的实现 323
11.4 置换--选择排序 327
11.5 缓冲区的并行操作处理 334
11.6 最佳归并树 336
11.7 磁带归并排序 338
第十二章 文件 342
12.1 有关文件的基本概念 342
12.2 顺序文件 344
12.3 索引文件 348
12.4 ISAM文件和VSAM文件 350
12.4.1 ISAM文件 350
12.4.2 VSAM文件 353
12.5 直接存取文件(散列文件) 355
12.6 多关键字的文件 357
12.6.1 多重表文件 357
12.6.2 倒排文件 358
名词索引 361
过程和函数索引 369