第1章 数据结构基础 1
问题求解分析 1
数据结构 3
数据结构的分类 5
数据的四种基本存储方法 5
数据结构三方面的关系 6
习题 6
第2章 算法及算法分析基础 7
算法的基本概念 7
算法的描述 8
算法分析方法 9
程序语言的基本语句与基本结构 13
数组与结构 15
抽象数据类型的表示与定义 17
习题 18
第3章 线性表 20
3.1线性表的定义 20
3.2线性表的运算 21
3.3线性表的顺序存储结构及实现 22
线性表的顺序存储结构 22
顺序表的实现 23
3.4线性表的链式存储结构及实现 28
单链表 28
循环链表 37
双向链表 41
静态链表 44
顺序表和链表的比较 47
3.5线性表的应用 48
习题 51
第4章 栈和队列 53
4.1栈 53
问题的提出 53
定义及其操作 53
栈的存储结构及实现 54
栈的应用举例:表达式求值 59
4.2队列 62
问题的提出 62
队列的定义及操作 62
队列的存储结构及实现 63
队列的应用举例 69
习题 78
第5章 矩阵和广义表 81
5.1矩阵的存储 81
5.2特殊矩阵 81
5.3稀疏矩阵 84
5.4广义表 87
习题 89
第6章 二叉树和树 90
6.1二叉树的定义和性质 91
二叉树的定义及相关术语 91
特殊二叉树 93
二叉树的性质 93
6.2二叉树的存储结构 95
二叉树的顺序存储表示 95
二叉树的链式存储表示 97
6.3二叉树的遍历 99
问题的提出 99
二叉树的遍历算法 100
二叉树遍历的非递归实现 102
遍历算法的应用 104
6.4二叉树的线索化 109
线索二叉树的定义 109
线索二叉树的结构 109
二叉树的线索化算法 110
线索二叉树基本操作的实现 112
6.5二叉树的应用——哈夫曼树 115
问题的引入 115
哈夫曼树的基本概念及其构造 116
哈夫曼树的应用——哈夫曼编码 117
哈夫曼树的构造及其编译码算法 120
6.6树 124
树的定义及相关术语 124
树的存储结构 125
树、森林与二叉树的转换 129
树及森林的遍历 130
习题 131
第7章图 133
7.1定义及相关术语 133
图的定义 134
相关术语 134
7.2图的存储结构 136
图的顺序存储——邻接矩阵 136
图的链式存储——邻接表 138
7.3图的遍历 141
深度优先遍历 142
广度优先遍历 143
遍历的应用 144
7.4图的应用 146
最小生成树 146
最短路径 151
拓扑排序 158
关键路径 162
习题 167
第8章 散列结构 169
8.1散列表的概念 169
8.2散列函数的构造方法 170
8.3处理冲突的方法 171
开放定址法 171
拉链法 174
8.4散列表的查找及其分析 175
习题 178
第9章 集合结构 179
9.1集合概述 180
9.2集合的存储结构 181
集合的位向量实现 181
集合的表实现 183
集合的散列实现 188
9.3并查集 191
等价类 191
并查集及运算 192
第10章 排序 197
引言 197
插入排序 198
交换排序 202
归并排序 206
选择排序 210
基数排序 216
习题 220
第11章 查找 222
11.1基本概念 222
11.2线性表查找 223
顺序查找 223
折半查找 224
分块查找 226
11.3树表查找 228
二叉树查找 228
平衡二叉树(AVL树) 233
B-树 236
习题 243
第12章 文件 245
文件的基本概念 245
顺序文件 248
索引文件 249
ISAM文件和VSAM文件 252
散列文件 257
多重表文件 259
习题 261
第13章 算法设计技术与应用 263
背包问题 263
货郎担问题 268
学生成绩管理系统 272
参考文献 296