第1章 绪论 1
1.1 数据结构的概念 1
1.1.1 计算机解决问题的步骤 1
1.1.2 基本概念和术语 4
1.1.3 研究数据结构的意义 6
1.2 抽象数据类型的表示 7
1.2.1 数据类型 7
1.2.2 抽象数据类型 7
1.2.3 抽象数据类型的表示 8
1.3 算法和算法分析 10
1.3.1 算法特性 10
1.3.2 算法描述 11
1.3.3 算法性能分析与度量 11
1.4 本章小结 13
习题 14
第2章 线性表 17
2.1 线性表的定义及其基本操作 17
2.1.1 线性表的定义 17
2.1.2 线性表的基本操作 17
2.2 线性表的顺序表示与实现 19
2.2.1 顺序表 19
2.2.2 顺序表基本运算的实现 20
2.3 线性表的链式表示与实现 24
2.3.1 单链表 24
2.3.2 单链表的基本运算 25
2.4 双向链表 28
2.4.1 双向链表的存储结构 28
2.4.2 双向链表的基本运算 29
2.5 循环链表 30
2.6 静态链表 31
2.7 线性表的应用 33
2.8 顺序表和链表的比较 36
2.9 本章小结 36
习题 37
第3章 栈和队列 41
3.1 栈 41
3.1.1 栈的抽象数据类型的定义 41
3.1.2 栈的表示与实现 42
3.2 队列 46
3.2.1 队列的抽象数据类型的定义 46
3.2.2 队列的表示与实现 47
3.3 栈和队列的应用 53
3.3.1 栈的应用 53
3.3.2 队列的应用 62
3.4 本章小结 65
习题 65
第4章 数组和广义表 67
4.1 数组的概念 67
4.2 数组的存储结构 68
4.2.1 数组的内存映像 68
4.2.2 数组的顺序存储表示与实现 69
4.3 矩阵的压缩存储 71
4.3.1 特殊矩阵 72
4.3.2 稀疏矩阵 74
4.4 广义表的概念 84
4.5 广义表的存储结构 86
4.6 数组和广义表的应用 90
4.6.1 数组的应用 90
4.6.2 广义表的应用 93
4.7 本章小结 95
习题 95
第5章 串 98
5.1 串的基本概念 98
5.2 串的表示与实现 100
5.2.1 串的顺序存储表示与实现 100
5.2.2 串的链式存储表示与实现 105
5.3 模式匹配 107
5.3.1 简单的模式匹配算法 107
5.3.2 KMP算法 109
5.4 串的应用 114
5.4.1 文本编辑 114
5.4.2 文本加密 116
5.4.3 文本替换 118
5.5 本章小结 118
习题 119
第6章 树和二叉树 121
6.1 树 121
6.1.1 树的基本概念 121
6.1.2 树的表示 124
6.2 二叉树 125
6.2.1 二叉树的概念 125
6.2.2 二叉树的性质 127
6.2.3 二叉树的存储结构 128
6.3 二叉树的遍历 131
6.3.1 二叉树的遍历方法及递归实现 131
6.3.2 二叉树遍历的非递归实现 133
6.3.3 二叉树的应用 136
6.3.4 二叉树遍历的应用 137
6.4 线索二叉树 140
6.4.1 线索二叉树的定义及结构 140
6.4.2 线索二叉树的基本操作实现 142
6.5 树和森林 145
6.5.1 树的存储结构 145
6.5.2 树、森林与二叉树的关系 147
6.5.3 树和森林的遍历 149
6.6 哈夫曼树及其应用 150
6.6.1 哈夫曼树 150
6.6.2 哈夫曼树编码 153
6.6.3 哈夫曼树的应用 155
6.7 树的应用 157
6.7.1 集合的表示 157
6.7.2 关系等价求等价类问题 159
6.8 本章小结 160
习题 161
第7章 图 164
7.1 图的基本概念 164
7.1.1 图的定义 164
7.1.2 图的基本术语 165
7.2 图的存储结构 168
7.2.1 邻接矩阵 168
7.2.2 邻接表 170
7.2.3 十字链表 172
7.2.4 邻接多重表 174
7.3 图的遍历 176
7.3.1 深度优先遍历 176
7.3.2 广度优先遍历 178
7.4 最小生成树 179
7.4.1 最小生成树的概念 179
7.4.2 构造最小生成树的Prim算法 179
7.4.3 构造最小生成树的Kruskal算法 182
7.5 最短路径 184
7.5.1 从一个源点到其他各顶点的最短路径 184
7.5.2 每一对顶点之间的最短路径 187
7.6 有向无环图及其应用 189
7.6.1 有向无环图的概念 189
7.6.2 拓扑排序 189
7.6.3 关键路径 194
7.7 图的应用 198
7.7.1 图在路由器寻径中的应用 199
7.7.2 图在物流信息系统中的应用 199
7.8 本章小结 200
习题 200
第8章 查找 204
8.1 查找的基本概念 204
8.2 静态查找表 206
8.2.1 顺序表的查找 206
8.2.2 有序表的查找 208
8.2.3 索引表的查找 211
8.3 动态查找表 211
8.3.1 二叉排序树和平衡二叉树 212
8.3.2 B-树和B+树 224
8.4 哈希表 230
8.4.1 什么是哈希表 230
8.4.2 哈希函数的构造方法 232
8.4.3 冲突的解决方法 234
8.4.4 哈希表的查找 236
8.5 查找的应用 238
8.5.1 在ARM Linux中的应用 238
8.5.2 病毒特征代码串的搜索 239
8.6 本章小结 241
习题 241
第9章 排序 245
9.1 排序的基本概念 245
9.2 内部排序 246
9.2.1 插入排序 246
9.2.2 快速排序 252
9.2.3 选择排序 256
9.2.4 归并排序 260
9.2.5 基数排序 262
9.2.6 各种内部排序方法的比较和选择 265
9.3 外部排序 266
9.3.1 外部排序的方法 267
9.3.2 多路平衡归并的实现 268
9.4 本章小结 270
习题 271
第10章 文件 273
10.1 文件的基本概念 273
10.2 文件组织 274
10.3 本章小结 280
习题 280
附录A 习题参考答案(部分) 282
附录B 2009年全国计算机专业硕士研究生入学考试大纲(数据结构) 284
参考文献 286