第1章 数据结构概述 1
本章学习目标 1
1.1 学习数据结构的意义 1
1.2 数据结构的有关概念和术语 3
1.2.1 基本概念和术语 3
1.2.2 数据结构的定义 4
1.3 数据类型及面向对象的概念 6
1.3.1 数据类型 6
1.3.2 抽象数据类型 7
1.3.3 面向对象的概念 8
1.4 算法和算法描述 13
1.4.1 算法与算法特性 13
1.4.2 算法描述 14
1.5 算法时空效率分析方法 15
小结 17
习题1 18
上机训练1 19
第2章 线性表 21
本章学习目标 21
2.1 线性表的逻辑结构 21
2.1.1 线性表的定义 22
2.1.2 线性表的基本操作 22
2.2 线性表的顺序存储结构及运算实现 23
2.2.1 用顺序表实现线性表的原理 23
2.2.2 用顺序表类形式实现学生信息的简单操作 27
2.2.3 顺序表类的一般形式 32
2.3 线性表的链式存储及运算实现 38
2.3.1 单链表 38
2.3.2 单链表基本运算的实现 39
2.3.3 循环链表 53
2.3.4 双向循环链表 56
2.3.5 静态链表 62
2.4 顺序表和链表的比较 67
2.5 线性表的典型应用 67
小结 72
习题2 73
上机训练2 74
第3章 栈和队列 76
本章学习目标 76
3.1 栈 76
3.1.1 栈的定义及基本运算 77
3.1.2 栈的顺序存储结构及运算实现 78
3.1.3 栈的链式存储结构及运算实现 88
3.1.4 栈的典型应用 102
3.2 队列 109
3.2.1 队列的定义及基本运算 109
3.2.2 队列的顺序存储结构及运算实现 110
3.2.3 队列的链式存储结构及运算实现 125
3.2.4 队列的典型应用 131
小结 133
习题3 133
上机训练3 135
第4章 数组、特殊矩阵和广义表 138
本章学习目标 138
4.1 数组 138
4.1.1 数组的基本概念 138
4.1.2 数组的存储结构 139
4.2 特殊矩阵的压缩存储 140
4.2.1 对称矩阵 140
4.2.2 三角矩阵 141
4.2.3 对角矩阵 142
4.2.4 稀疏矩阵 143
4.3 广义表 155
4.3.1 广义表的定义和性质 155
4.3.2 广义表的基本运算 156
小结 157
习题4 157
上机训练4 158
第5章 串 159
本章学习目标 159
5.1 串的定义及其基本运算 159
5.1.1 串的基本概念 159
5.1.2 串的基本运算 160
5.2 串的存储结构 161
5.2.1 串的顺序存储 161
5.2.2 串的链式存储 162
5.3 串运算的应用 163
5.3.1 顺序串上的子串定位运算原理 163
5.3.2 顺序串基本运算的实现 164
小结 167
习题5 168
上机训练5 168
第6章 树 169
本章学习目标 169
6.1 树的概念与表示 169
6.1.1 树的定义 169
6.1.2 树的相关术语 170
6.1.3 树的表示 171
6.2 二叉树的概念与性质 171
6.2.1 二叉树的基本概念 171
6.2.2 二叉树的重要性质 172
6.2.3 二叉树的基本运算 174
6.3 二叉树的存储结构实现 176
6.3.1 顺序存储结构 176
6.3.2 链式存储结构 177
6.3.3 二叉树二叉链表操作的实现 178
6.4 线索二叉树 189
6.4.1 线索二叉树的定义及结构 189
6.4.2 中序线索二叉树相关操作 190
6.5 树和森林 194
6.5.1 树的存储结构 194
6.5.2 树和森林转换为二叉树 196
6.5.3 二叉树还原为树和森林 197
6.6 最优二叉树及其应用 198
6.6.1 最优二叉树的概念 198
6.6.2 最优二叉树的构造 200
小结 206
习题6 207
上机训练6 208
第7章 图 209
本章学习目标 209
7.1 图的基本概念 209
7.2 图的存储表示 213
7.2.1 邻接矩阵 213
7.2.2 邻接表 216
7.3 图的遍历 220
7.3.1 深度优先遍历 220
7.3.2 广度优先遍历 223
7.4 图的生成树 225
7.4.1 生成树及最小生成树 225
7.4.2 构造最小生成树的Prim算法 226
7.4.3 构造最小生成树的Kruskal算法 230
7.5 最短路径 231
7.6 拓扑排序 236
7.6.1 有向无环图的概念 236
7.6.2 AOV网与拓扑排序 236
7.7 关键路径 240
7.7.1 AOE网 240
7.7.2 关键路径的求解原理 241
7.7.3 关键路径的求解实现 245
小结 248
习题7 248
上机训练7 250
第8章 查找 253
本章学习目标 253
8.1 基本概念与术语 253
8.2 静态查找表 254
8.2.1 静态查找表的结构 254
8.2.2 顺序查找 254
8.2.3 有序表的二分查找 256
8.2.4 分块查找 259
8.3 动态查找表 260
8.3.1 二叉排序树 260
8.3.2 平衡二叉树 267
8.3.3 B-树 269
8.4 哈希表查找 270
8.4.1 哈希表与哈希方法 270
8.4.2 常用的哈希函数 271
8.4.3 处理冲突的方法 273
8.4.4 哈希表的实现 276
小结 281
习题8 281
上机训练8 282
第9章 排序 283
本章学习目标 283
9.1 基本概念 283
9.2 常见内部排序算法原理及实现 285
9.2.1 插入排序 285
9.2.2 交换排序 288
9.2.3 选择排序 293
9.2.4 归并排序 298
9.2.5 基数排序 300
9.2.6 内部排序的比较 303
9.3 常见内部排序方法在学生信息管理中的应用 303
9.4 外部排序 311
9.4.1 外部排序 311
9.4.2 多路平衡归并的实现 312
小结 312
习题9 313
上机训练9 313
参考文献 315