第1章 绪论 1
1.1 概述 2
1.2 基本概念及术语 4
1.2.1 数据结构的基本概念 4
1.2.2 数据结构的分类 6
1.2.3 数据结构的图形表示 7
1.3 算法及算法分析 8
1.3.1 算法及其特性 8
1.3.2 算法分析 9
小结 11
习题 11
第2章 线性表 14
2.1 应用背景 15
2.2 线性表的类型定义 15
2.3 线性表的顺序存储结构 17
2.3.1 线性表的顺序存储结构介绍 17
2.3.2 线性表典型操作的算法实现 20
2.4 线性表的链式存储结构 28
2.4.1 线性链表的基本概念及特性 28
2.4.2 单链表的存储表示 30
2.4.3 单链表的基本操作 31
2.4.4 循环链表介绍 42
2.4.5 双向循环链表 44
2.4.6 静态链表 48
2.5 线性表的应用 50
小结 57
习题 57
第3章 栈和队列 64
3.1 应用背景 65
3.2 栈 65
3.2.1 栈的定义 65
3.2.2 栈的顺序存储 67
3.2.3 栈的链式存储 73
3.2.4 栈的应用举例 76
3.3 栈与递归的实现 77
3.4 队列 81
3.4.1 抽象数据类型队列的定义 81
3.4.2 队列的顺序存储 82
3.4.3 循环队列 83
3.4.4 队列的链式存储 89
3.4.5 队列的应用 92
小结 92
习题 93
第4章 串 95
4.1 应用背景 96
4.2 串类型的定义 96
4.3 串的存储结构 98
4.3.1 定长顺序存储结构 98
4.3.2 堆分配存储表示 100
4.3.3 串的链式存储结构 103
4.4 串的模式匹配 104
4.4.1 模式匹配的简单算法 105
4.4.2 模式匹配的一种改进算法KMP 106
4.5 串操作应用举例 110
小结 111
习题 112
第5章 数组和广义表 113
5.1 应用背景 114
5.2 数组的定义 114
5.3 数组的顺序表示和实现 116
5.4 矩阵的压缩存储 118
5.4.1 对称矩阵 118
5.4.2 三角矩阵 119
5.4.3 对角矩阵 120
5.5 稀疏矩阵 121
5.5.1 稀疏矩阵的三元组表示法 121
5.5.2 稀疏矩阵的链式存储结构 126
5.6 广义表 127
5.6.1 广义表的定义 127
5.6.2 广义表的存储结构 128
小结 130
习题 130
第6章 树和二叉树 132
6.1 应用背景 133
6.2 树的定义和基本术语 133
6.3 二叉树 136
6.3.1 二叉树的定义及特点 136
6.3.2 二叉树的性质 138
6.3.3 二叉树的存储结构 139
6.3.4 遍历二叉树 142
6.3.5 线索二叉树 150
6.4 树和森林 156
6.4.1 树的存储表示 157
6.4.2 树、森林与二叉树的转换 160
6.4.3 树和森林的遍历 163
6.5 哈夫曼树 165
小结 167
习题 168
第7章 图 172
7.1 应用背景 173
7.2 图的定义和术语 173
7.3 图的存储结构 177
7.3.1 邻接矩阵 177
7.3.2 邻接表 181
7.3.3 十字链表法 184
7.3.4 邻接多重表 185
7.4 图的遍历 186
7.4.1 深度优先遍历 186
7.4.2 广度优先遍历 190
7.5 图的连通性问题 192
7.5.1 无向图的连通分量和生成树 192
7.5.2 有向图的强连通分量 193
7.5.3 最小生成树 195
7.6 最短路径 201
7.6.1 从某个源点到其余各顶点的最短路径 202
7.6.2 每一对顶点之间的最短路径 206
7.7 有向无环图及其应用 208
7.7.1 拓扑排序 209
7.7.2 关键路径 213
小结 217
习题 217
第8章 查找 221
8.1 应用背景 222
8.2 查找的基本概念 222
8.3 静态查找表 223
8.3.1 顺序表的查找 223
8.3.2 有序表的查找 226
8.3.3 索引顺序表的查找 229
8.4 动态查找表 231
8.4.1 二叉排序树 232
8.4.2 平衡二叉树 240
8.5 哈希表 246
8.5.1 什么是哈希表 246
8.5.2 哈希函数的构造方法 247
8.5.3 解决冲突的方法 249
8.5.4 哈希表查找及其分析 253
小结 256
习题 256
第9章 内部排序 259
9.1 应用背景 260
9.2 概述 260
9.3 插入排序 261
9.3.1 直接插入排序 262
9.3.2 折半插入排序 264
9.3.3 希尔排序 265
9.4 交换排序 267
9.4.1 冒泡排序 267
9.4.2 快速排序 269
9.5 选择排序 272
9.5.1 直接选择排序 272
9.5.2 堆排序 274
9.6 归并排序 277
9.7 基数排序 278
9.8 各种内部排序方法的比较 281
小结 282
习题 282
各章习题参考答案 286
参考文献 303