第1章 概述 1
1.1 数据结构的基本概念 1
1.1.1 数据结构的定义 1
目录 1
1.1.2 基本概念和术语 4
1.2 数据的逻辑结构 6
1.3 数据的存储结构 7
1.4 数据的操作 10
1.5 抽象数据类型的定义 11
1.6.1 算法的描述 12
1.6 算法描述与算法分析 12
1.6.2 算法的设计要求 14
1.6.3 算法的性能评估 16
1.7 小结 19
习题1 20
第2章 线性表 22
2.1 线性表的基本概念 22
2.1.1 线性表的定义及特点 22
2.1.2 线性表的抽象数据类型 23
2.2.2 顺序存储的算法实现 24
2.2.1 顺序存储的定义 24
2.2 线性表的顺序存储结构 24
2.2.3 应用举例 28
2.3 线性表的链式存储结构 29
2.3.1 线性链表 29
2.3.2 循环链表 33
2.3.3 双向链表 35
2.3.4 应用举例 36
2.4 线性表的应用 37
习题2 40
2.5 小结 40
第3章 栈和队列 42
3.1 栈 42
3.1.1 栈的定义 42
3.1.2 栈的抽象数据类型 42
3.1.3 栈的存储结构及描述 43
3.1.4 栈的应用 45
3.2 队列 48
3.2.1 队列的定义 48
3.2.2 队列的抽象数据类型 49
3.2.3 队列的存储结构 49
3.3 小结 54
习题3 55
第4章 串 56
4.1 串的基本概念 56
4.1.1 串的定义 56
4.1.2 串的抽象数据类型 57
4.2 串的存储结构 57
4.2.1 顺序存储 58
4.2.2 链式存储 61
4.2.3 索引存储 62
4.3.1 串的模式匹配BF算法 63
4.3 串模式匹配 63
4.3.2 串的模式匹配KMP算法 65
4.3.3 改进的模式匹配算法 67
4.4 小结 68
习题4 68
第5章 数组 70
5.1 数组的基本概念 70
5.1.1 数组的定义及特点 70
5.1.2 数组的抽象数据类型 70
5.2 数组的顺序存储结构 71
5.3 数组的应用举例 73
5.4 矩阵的压缩存储 74
5.4.1 特殊矩阵 74
5.4.2 稀疏矩阵 76
5.5 小结 82
习题5 82
第6章 树形结构 84
6.1 树形结构的基本概念 84
6.1.1 树形结构的定义及相关术语 84
6.1.2 二叉树的基本概念 87
6.2.1 二叉树的遍历 91
6.2 树形结构的遍历 91
6.2.2 树与森林的遍历 94
6.2.3 森林与二叉树的相互转换 95
6.3 树形结构的存储 97
6.3.1 树的存储结构 97
6.3.2 二叉树的存储方法 99
6.4 线索二叉树 103
6.4.1 线索二叉树的定义 104
6.4.2 线索二叉树的建立 105
6.4.3 线索二叉树的遍历 107
6.4.4 线索二叉树的维护 111
6.5.1 哈夫曼树的定义 112
6.5 哈夫曼树及其应用 112
6.5.2 哈夫曼树的构造 114
6.5.3 哈夫曼树的应用 114
6.5.4 哈夫曼编码算法 116
6.6 小结 119
习题6 120
第7章 图 122
7.1 图的基本概念 122
7.1.1 图的定义 122
7.1.2 图的抽象数据类型 124
7.2 图的存储结构 125
7.2.1 邻接矩阵 126
7.2.2 邻接链表 129
7.2.3 十字链表 132
7.2.4 邻接多重表 134
7.3 图的遍历 135
7.3.1 图的深度优先遍历 136
7.3.2 图的广度优先遍历 138
7.4 最小生成树 141
7.4.1 最小生成树的定义 141
7.4.2 最小生成树的生成算法 142
7.5 图的应用 144
7.5.1 拓扑排序 144
7.5.2 关键路径 148
7.5.3 最短路径 151
7.6 小结 154
习题7 155
第8章 查找 159
8.1 基本概念 159
8.2 静态查找表 161
8.2.1 顺序表的查找 161
8.2.2 有序表的查找 163
8.2.3 静态树表的查找 166
8.2.4 分块查找 167
8.3 动态查找表 169
8.3.1 二叉排序树 169
8.3.2 平衡二叉树 174
8.3.3 B-树和B+树 178
8.4 哈希表 184
8.4.1 哈希表的基本概念 184
8.4.2 构造哈希函数的方法 184
8.4.3 冲突处理 186
8.4.4 哈希表的查找 189
8.5 小结 191
习题8 192
第9章 排序 193
9.1 基本概念 193
9.2 插入排序 195
9.2.1 直接插入排序 195
9.2.2 折半插入排序 197
9.2.3 表插入排序 199
9.2.4 希尔排序 202
9.3.1 冒泡排序 204
9.3 交换排序 204
9.3.2 快速排序 206
9.4 选择排序 208
9.4.1 直接选择排序 209
9.4.2 树形选择排序 210
9.4.3 堆栈序 212
9.5 归并排序 217
9.6 基数排序 219
9.7 各种内部排序方法的比较和选择 223
9.8 小结 224
习题9 225
10.1.1 文件的概念 227
第10章 文件 227
10.1 文件概述 227
10.1.2 文件的逻辑结构及操作 228
10.1.3 文件的存储结构 228
10.2 顺序文件 229
10.2.1 顺序文件的定义及分类 229
10.2.2 顺序文件的操作 229
10.3 索引文件 230
10.3.1 索引文件的定义及构成 230
10.3.4 利用查找表建立多级索引 232
10.3.3 索引文件的操作 232
10.3.2 索引文件的存储 232
10.3.5 ISAM文件和VSAM文件 233
10.4 随机文件 236
10.4.1 随机文件的定义 236
10.4.2 随机文件的存储 236
10.4.3 随机文件的操作 237
10.4.4 随机文件的特点 237
10.5 小结 237
习题10 237
参考文献 239