第1章 数据结构概述 1
1.1 基本概念 1
1.1.1 数据、数据元素、数据对象 1
1.1.2 数据结构 2
1.2 数据结构的分类 3
1.3 数据类型 5
1.3.1 基本类型、组合类型 5
1.3.2 抽象数据类型 5
1.4 算法和算法分析 8
1.4.1 算法概念 8
1.4.2 算法分析 9
习题 11
第2章 向量、栈和队列 13
2.1 线性表 13
2.1.1 线性表的抽象数据类型 13
2.1.2 线性表的结构表示 15
2.2 向量 18
2.2.1 向量的抽象数据类型 18
2.2.2 向量的插入和删除 20
2.2.3 向量的应用 23
2.3 栈 26
2.3.1 栈的抽象数据类型及其实现 26
2.3.2 栈的应用 29
2.4 递归效率分析 36
2.4.1 递归方程求解 36
2.4.2 生成函数求解递归方程 37
2.4.3 特征方程求解递归方程 38
2.4.4 递归树方法 39
2.5 队列 40
2.5.1 队列的抽象数据类型及其实现 40
2.5.2 队列的应用——模拟银行活动 46
习题 54
第3章 链表 56
3.1 单链表 56
3.1.1 基本概念 56
3.1.2 单链表结点结构 57
3.1.3 单链表结构 59
3.1.4 栈的单链表实现 70
3.1.5 队列的单链表实现 71
3.1.6 单链表的应用举例 75
3.2 循环链表 80
3.3 双链表 82
习题 84
第4章 串 87
4.1 基本概念 87
4.2 串的存储 88
4.3 串结构和串的运算 89
4.4 模式匹配 91
4.4.1 朴素的模式匹配算法 91
4.4.2 KMP匹配算法 92
4.4.3 BM匹配算法 95
习题 98
第5章 排序 99
5.1 基本概念 99
5.2 插入排序 100
5.2.1 直接插入排序 100
5.2.2 折半插入排序 102
5.2.3 Shell排序 104
5.3 选择排序 105
5.3.1 直接选择排序 105
5.3.2 树形选择排序 107
5.4 交换排序 108
5.4.1 起泡排序 108
5.4.2 快速排序 109
5.5 分配排序 113
5.5.1 基本思想 113
5.5.2 基数排序 114
5.6 归并排序 117
5.7 外部排序 120
5.7.1 二路合并排序 120
5.7.2 多路替代选择合并排序 121
5.7.3 最佳合并排序 122
习题 123
第6章 查找 125
6.1 基本概念 125
6.2 顺序查找 125
6.3 折半查找 127
6.4 分块查找 129
6.5 散列查找 131
6.5.1 概述 131
6.5.2 散列函数 132
6.5.3 冲突的处理 134
6.5.4 散列查找的效率 137
习题 138
第7章 树和二叉树 140
7.1 树的概念 140
7.2 二叉树 141
7.2.1 二叉树的概念 141
7.2.2 二叉树的性质 141
7.2.3 二叉树的存储方式 144
7.2.4 树(树林)与二叉树的相互转换 146
7.3 树(树林)、二叉树的遍历 147
7.3.1 树(树林)的遍历 147
7.3.2 二叉树的遍历 147
7.4 抽象数据类型BinaryTree以及BinaryTree结构 148
7.4.1 抽象数据类型BinaryTree 148
7.4.2 一个完整的包含构建二叉树与遍历实现的例子 150
7.5 二叉树的遍历算法 151
7.5.1 非递归(使用栈)的遍历算法 151
7.5.2 线索化二叉树的遍历 153
习题 157
第8章 树状结构的应用 159
8.1 二叉排序树 159
8.1.1 二叉排序树与BinarySTree结构 159
8.1.2 二叉排序树的检索、插入、删除运算 160
8.1.3 等概率查找对应的最佳二叉排序树 164
8.2 平衡的二叉排序树 166
8.2.1 平衡二叉排序树的定义 166
8.2.2 平衡二叉排序树的插入、删除 167
8.2.3 AVL树高度 170
8.3 B-树、B+-树 171
8.4 键树和2-3树 175
8.4.1 键树 175
8.4.2 2-3树 176
8.5 Huffman最优树与树编码 178
8.5.1 Huffman最优树 178
8.5.2 树编码 181
8.6 堆排序 183
8.7 判定树 189
8.8 等价类和并查集 190
8.8.1 等价类 190
8.8.2 并查集 190
8.9 红黑树 193
习题 197
第9章 图 199
9.1 基本概念 199
9.2 图的存储表示 201
9.2.1 相邻矩阵表示图 201
9.2.2 图的邻接表表示 202
9.2.3 邻接多重表 203
9.3 基于邻接表表示的Graph结构 205
9.4 图的遍历 206
9.4.1 深度优先遍历 206
9.4.2 广度优先遍历 208
9.5 最小代价生成树 209
9.6 单源最短路径问题 213
9.7 每一对顶点间的最短路径问题 216
9.8 有向无回路图 218
9.8.1 DAG图和AOV、 AOE网 218
9.8.2 AOV网的拓扑排序 220
9.8.3 AOE网的关键路径 222
习题 224
第10章 算法设计与分析 226
10.1 递归与分治 226
10.1.1 递归方法设计 226
10.1.2 分治法 227
10.2 回溯法 229
10.3 分支限界法 234
10.4 贪心算法 241
10.5 动态规划法 242
习题 245
关键词索引 247
参考文献 250