第1章 绪论 1
1.1 数据结构的重要性 1
1.2 基本术语 2
1.3 数据结构的概念 3
1.4 数据的逻辑结构 6
1.5 数据的存储结构 7
1.6 数据的运算 9
1.7 算法的描述和分析 9
1.7.1 算法描述 10
1.7.2 算法分析 13
1.8 小结 14
习题 14
第2章 线性表 16
2.1 线性表及逻辑结构 16
2.2 线性表的顺序存储 19
2.2.1 顺序存储 19
2.2.2 顺序结构线性表的运算 21
2.3 线性表的链式存储 24
2.3.1 线性链表 24
2.2.3 顺序存储结构的特点 24
2.3.2 线性链表的运算 28
2.3.3 循环链表 32
2.3.4 循环链表的运算 33
2.3.5 双向链表 34
2.3.6 双向链表的运算 35
2.3.7 链式存储结构的特点 37
2.4 链式存储结构的应用 37
2.4.1 约瑟夫环算法 37
2.4.2 一元多项式求和 39
2.5 小结 43
习题 43
第3章 栈和队列 45
3.1 栈 45
3.1.1 栈的定义 45
3.1.2 栈的顺序存储结构 46
3.1.3 栈的链式存储结构 50
3.2 栈的应用 52
3.2.1 迷宫问题 52
3.2.2 算术表达式求值 55
3.3.1 队列的定义 58
3.3 队列 58
3.3.2 队列的顺序存储 60
3.3.3 队列的链式存储 66
3.4 队列的应用 71
3.5 小结 71
习题 72
第4章 递归 74
4.1 递归的定义 74
4.2 常见递归问题 75
4.3 递归的实现 79
4.4 递归转化为非递归的一般过程 83
4.5 递归的时间和空间复杂度 87
4.6 小结 88
习题 88
第5章 串 89
5.1 串的基本概念 89
5.2 串的存储结构 90
5.2.1 串的静态存储结构 90
5.2.2 串的动态存储结构 92
5.3.1 串的基本运算 94
5.3 串的运算 94
5.3.2 实现串的基本运算的算法 95
5.4 模式匹配 100
5.4.1 模式匹配的BF算法 100
5.4.2 模式匹配的KMP算法 103
5.5 串在文本编辑中的应用 107
5.6 小结 108
习题 109
6.1 数组的定义及其基本操作 111
6.1.1 数组的定义 111
第6章 数组和广义表 111
6.1.2 数组的基本操作 112
6.2 数组的顺序存储结构 113
6.3 矩阵的压缩存储 117
6.3.1 特殊矩阵的压缩存储 117
6.3.2 稀疏矩阵的压缩存储 119
6.4 广义表的概念 133
6.5 广义表的存储结构表示 135
6.6 小结 138
习题 138
7.1 树 140
7.1.1 树的定义 140
第7章 树形结构 140
7.1.2 树的表示形式 141
7.1.3 树的常用术语 142
7.1.4 树的基本操作 143
7.2 二叉树 143
7.2.1 二叉树的定义 143
7.2.2 二叉树的性质 145
7.2.3 二叉树的存储结构 147
7.2.4 二叉树的遍历 150
7.2.5 二叉树遍历的应用 153
7.3 线索二叉树 155
7.4 树、森林和二叉树的关系 160
7.4.1 树的存储结构 160
7.4.2 森林与二叉树的转换 163
7.4.3 树和森林的遍历 166
7.5 哈夫曼树及其应用 168
7.5.1 哈夫曼树的定义 168
7.5.2 哈夫曼树的构造 169
7.5.3 哈夫曼树在编码问题中的应用 169
习题 174
7.6 小结 174
第8章 图 179
8.1 图的定义及基本概念 179
8.2 图的存储结构 183
8.2.1 邻接矩阵表示法 183
8.2.2 邻接表 186
8.2.3 十字链表 190
8.2.4 邻接多重表 191
8.3 图的遍历 193
8.3.1 深度优先搜索 193
8.3.2 广度优先搜索 195
8.4 生成树 197
8.4.1 普里姆算法 198
8.4.2 克鲁斯卡尔算法 201
8.5 最短路径 204
8.5.1 单源最短路径 204
8.5.2 求每一对顶点之间的最短路径 207
8.6 拓扑排序 208
8.7 关键路径 213
8.8 小结 220
习题 220
9.1 查找的基本概念 224
第9章 查找 224
9.2 线性表的查找 225
9.2.1 顺序查找 225
9.2.2 折半查找 227
9.2.3 分块查找 229
9.3 树表的查找 232
9.3.1 叉查找树 232
9.3.2 平衡二叉树 238
9.4 哈希表的查找 243
9.4.1 哈希表 243
9.4.2 构造哈希表的基本方法 244
9.4.3 解决冲突的方法 246
9.5 各种查找方法的比较 248
9.6 小结 249
习题 250
第10章 排序 252
10.1 排序的基本概念 252
10.2 内部排序 254
10.2.1 插入排序 254
10.2.2 冒泡排序 258
10.2.3 快速排序 259
10.2.4 选择排序 262
10.2.5 归并排序 269
10.2.6 基数排序 271
10.3 内部排序方法比较 276
10.4 外部排序简介 277
10.5 小结 277
习题 278
第11章 文件 280
11.1 外存储器的介绍 280
11.2 有关文件的概念 281
11.2.1 文件及其类别 282
11.2.2 文件的操作 283
11.3 文件的组织 285
11.3.1 顺序文件 285
11.3.2 索引文件 286
11.3.3 散列文件 292
11.3.4 多关键字文件 294
11.4 小结 296
习题 296
参考文献 298