第1章 绪论 1
1.1 什么是数据结构 1
1.2 基本概念和术语 3
1.3 数据的逻辑结构 4
1.4 数据的存储结构 5
1.4.1 顺序存储方式 6
1.4.2 链式存储方式 6
1.4.3 索引存储方式 7
1.4.4 散列存储方式 7
1.5.1 算法 8
1.5 算法和算法分析 8
1.5.2 算法设计的要求 9
1.5.3 算法效率的度量 10
习题一 12
第2章 线性表 15
2.1 线性表的逻辑结构 15
2.1.1 线性表的定义 15
2.1.2 线性表的基本操作 16
2.2 线性表的顺序存储及运算实现 17
2.2.1 顺序表 17
2.2.2 顺序表上基本运算的实现 19
2.2.3 顺序表应用举例 22
2.3 线性表的链式存储及运算实现 24
2.3.1 线性链表 25
2.3.2 单链表的运算 26
2.3.3 循环链表 33
2.3.4 循环链表的运算 34
2.3.5 双向链表 35
2.3.6 双向链表的运算 36
2.3.7 简单应用举例 37
2.4 顺序表和链表的比较 43
习题二 44
3.1.1 栈的定义 46
第3章 栈和队列 46
3.1 栈 46
3.1.2 栈的顺序存储结构及基本运算的实现 47
3.1.3 栈的链式存储结构及基本运算的实现 52
3.2 栈的应用举例 54
3.2.1 表达式求值 54
3.2.2 数制转换 58
3.2.3 迷宫求解 59
3.2.4 行编辑程序 63
3.3.2 递归调用的实现 65
3.3 栈与递归 65
3.3.1 递归算法的基本思想 65
3.4 队列 69
3.4.1 队列的定义 69
3.4.2 队列的顺序存储结构及基本运算的实现 70
3.4.3 队列的链式存储结构及基本运算的实现 75
3.4.4 队列的应用 78
习题三 78
第4章 串 81
4.1 串的基本概念 81
4.2 串的基本运算 82
4.3.1 串的顺序存储表示 83
4.3 串的存储结构和实现算法 83
4.3.2 串的链式存储表示 84
4.3.3 串的堆分配存储表示 85
4.3.4 串的基本操作的实现算法 86
4.4 串的模式匹配算法 90
4.4.1 简单的模式匹配算法——BF算法 90
4.4.2 改进的模式匹配算法——KMP算法 92
4.5 串操作应用举例 96
习题四 98
5.1.2 多维数组 100
5.1.1 一维数组 100
第5章 数组和广义表 100
5.1 数组的定义 100
5.1.3 数组的基本操作 102
5.2 数组的顺序表示和实现 102
5.2.1 数组的顺序表示 102
5.2.2 数组类型在机器内部的实现 104
5.3 矩阵的压缩存储 106
5.3.1 特殊矩阵 107
5.3.2 稀疏矩阵 109
5.4.1 广义表的定义 117
5.4 广义表 117
5.4.2 广义表的表示 118
5.4.3 广义表的深度 119
5.4.4 广义表的特点 119
5.4.5 广义表的操作 120
5.5 广义表的存储结构 121
5.6 m元多项式的表示 122
5.7 广义表的递归算法 124
5.7.1 求广义表的深度 125
5.7.2 广义表的输出 127
5.7.3 建立广义表的存储结构 128
习题五 131
第6章 树和二叉树 133
6.1 树的定义和基本术语 133
6.2 二叉树 138
6.2.1 二叉树的定义 138
6.2.2 二叉树的性质 140
6.2.3 二叉树的存储结构 144
6.3 遍历二叉树和线索二叉树 149
6.3.1 遍历二叉树 149
6.3.2 线索二叉树 157
6.4 树和森林 161
6.4.1 树的存储结构 162
6.4.2 森林与二叉树的转换 166
6.4.3 树和森林的遍历 168
6.5 哈夫曼树及其应用 170
6.5.1 最优二叉树(哈夫曼树) 170
6.5.2 哈夫曼编码 176
6.5.3 哈夫曼树的其他应用 179
习题六 181
7.1 图的定义和术语 184
7.1.1 图形结构的实际背景 184
第7章 图 184
7.1.2 图的定义和术语 185
7.2 图的存储结构 190
7.2.1 邻接矩阵表示法 191
7.2.2 邻接表 193
7.2.3 十字链表 195
7.2.4 邻接多重表 197
7.3 图的遍历 199
7.3.1 深度优先搜索 199
7.3.2 广度优先搜索 201
7.4.2 有向图的强连通分量 203
7.4 图的连通性问题 203
7.4.1 无向图的连通分量和生成树 203
7.4.3 最小生成树 204
7.5 拓扑排序 208
7.6 关键路径 211
7.6.1 AOE网 211
7.6.2 关键路径 212
7.7 最短路径 216
7.7.1 从某个源点到其余各顶点的最短路径 217
7.7.2 每一对顶点之间的最短路径 218
习题七 221
第8章 查找 224
8.1 静态查找表 225
8.1.1 顺序表的查找 225
8.1.2 有序表的查找 227
8.1.3 索引顺序表的查找 229
8.2 动态查找表 231
8.2.1 二叉排序树和平衡二叉树 231
8.2.2 B-树B+树 240
8.3 哈希表 245
8.3.1 哈希表的概念及作用 245
8.3.2 构造哈希表的基本方法 246
8.3.3 处理冲突的方法 249
习题八 252
第9章 排序 254
9.1 排序的基本概念 254
9.2 插入排序 256
9.2.1 直接插入排序 256
9.2.2 折半插入排序 257
9.2.3 表插入排序 258
9.2.4 希尔排序 260
9.3 快速排序 261
9.3.1 冒泡排序 262
9.3.2 快速排序 263
9.4 选择排序 265
9.4.1 简单选择排序 265
9.4.2 树形选择排序 266
9.4.3 堆排序 267
9.5 归并排序 270
9.6 基数排序 271
9.7 各种内部排序方法的比较讨论 276
9.8 外部排序介绍 276
习题九 277
10.1.1 文件的类别 280
10.1 有关文件的基本概念 280
第10章 文件 280
10.1.2 文件的操作 281
10.2 顺序文件 282
10.3 索引文件 283
10.4 散列文件 284
10.5 多关键字文件 285
10.5.1 多重表文件 286
10.5.2 倒排文件 287
习题十 288
参考文献 289