数据结构 1
第1章 概论 1
1.1 基本概念和术语 1
1.2 学习数据结构的意义 4
1.3 算法的描述和分析 6
习题一 10
第2章 线性表 12
2.1 线性表的逻辑结构 12
2.2 线性表的顺序存储结构 13
2.2.1 顺序表 13
2.2.2 顺序表上实现的基本运算 14
2.3 线性表的链式存储结构 17
2.3.1 单链表 18
2.3.2 循环链表 25
2.3.3 双链表 27
2.4 顺序表和链表的比较 29
习题二 30
第3章 栈和队列 32
3.1 栈 32
3.1.1 栈的定义及基本运算 32
3.1.2 顺序栈 33
3.1.3 链栈 35
3.2 队列 37
3.2.1 队列的定义及基本运算 37
3.2.2 顺序队列 37
3.2.3 链队列 41
3.3 栈和队列的应用实例 43
习题三 49
第4章 串 51
4.1 串及其运算 51
4.1.1 串的基本概念 51
4.1.2 串的基本运算 52
4.2 串的存储结构 53
4.2.1 串的顺序存储 53
4.2.2 串的链式存储 54
4.2.3 串运算的实现 55
习题四 58
第5章 多维数组和广义表 59
5.1 多维数组 59
5.2 矩阵的压缩存储 60
5.2.1 特殊矩阵 61
5.2.2 稀疏矩阵 63
5.3 广义表的概念 66
习题五 68
第6章 树 69
6.1 树的概念 69
6.2 二叉树 71
6.2.1 二叉树的定义 71
6.2.2 二叉树的性质 72
6.2.3 二叉树的存储结构 74
6.3 二叉树的遍历 76
6.4 线索二叉树 79
6.5.1 树、森林与二叉树的转换 84
6.5 树和森林 84
6.5.2 树的存储结构 86
6.5.3 树和森林的遍历 89
6.6 哈夫曼树及其应用 90
6.6.1 最优二叉树(哈夫曼树) 90
6.6.2 哈夫曼编码 94
习题六 97
7.1 图的概念 100
第7章 图 100
7.2 图的存储结构 103
7.2.1 邻接矩阵表示法 103
7.2.2 邻接表表示法 104
7.3 图的遍历 107
7.3.1 深度优先遍历 108
7.3.2 广度优先遍历 110
7.4.1 生成树 113
7.4 生成树和最小生成树 113
7.4.2 最小生成树 115
7.5 最短路径 121
7.6 拓扑排序 127
习题七 131
第8章 排序 135
8.1 基本概念 135
8.2 插入排序 137
8.2.1 直接插入排序 137
8.2.2 希尔排序 139
8.3 交换排序 142
8.3.1 冒泡排序 142
8.3.2 快速排序 144
8.4 选择排序 150
8.4.1 直接选择排序 150
8.4.2 堆排序 151
8.5 归并排序 156
8.6.1 箱排序 159
8.6 分配排序 159
8.6.2 基数排序 161
8.7 各种内部排序方法的比较和选择 164
习题八 166
第9章 查找 168
9.1 基本概念 168
9.2 线性表的查找 169
9.2.1 顺序查找 169
9.2.2 二分查找 170
9.2.3 分块查找 173
9.3 树上的查找 174
9.3.1 二叉排序树 174
9.3.2 B-树 181
9.4 散列技术 191
9.4.1 散列表的概念 192
9.4.2 散列函数的构造方法 193
9.4.3 处理冲突的方法 195
9.4.4 散列表上的运算 198
习题九 203
第10章 文件 206
10.1 文件的基本概念 206
10.2 顺序文件 208
10.3 索引文件 210
10.4 索引顺序文件 211
10.4.1 ISAM文件 212
10.4.2 VSAM文件 213
10.5 散列文件 216
10.6 多关键字文件 217
10.6.1 多重表文件 217
10.6.2 倒排文件 218
习题十 219
参考书目 221
出版前言 225
数据结构自学考试大纲 225
一、课程性质及其设置目的 227
二、课程内容与考核目标 228
第1章 概论 228
第2章 线性表 228
第3章 栈和队列 229
第4章 串 230
第6章 树 231
第5章 多维数组和广义表 231
第7章 图 233
第8章 排序 234
第9章 查找 235
第10章 文件 236
实践环节 237
三、有关说明和实施要求 239
附录 题型举例 241
后记 242