前言 1
1 绪论 1
1.1 数据结构在计算机科学与技术中所处的地位 1
1.1.1 什么是数据结构 1
1.1.2 《数据结构》课程的地位 3
1.2 基本概念和术语 4
1.3 数据类型和抽象数据类型 6
1.4 算法描述与算法评价 8
1.4.1 算法描述 8
1.4.2 算法的设计要求 11
1.4.3 算法的评价 12
习题一 15
2 线性表 16
2.1 线性表的基本概念 16
2.1.1 线性表的逻辑结构 16
2.1.2 线性表的运算 17
2.2 线性表的顺序存储 17
2.2.1 顺序表 17
2.2.2 顺序表上的基本运算 19
2.3 线性表的链式存储结构 22
2.3.1 单链表及其单链表上的基本运算 23
2.3.2 循环链表 31
2.3.3 双向链表 32
2.4 线性表顺序存储结构和链式存储结构 35
2.5 线性表的应用举例 36
习题二 39
上机实习题一 40
3.1 栈 42
3.1.1 栈的定义和操作 42
3 栈和队列 42
3.1.2 栈的顺序存储结构 43
3.1.3 栈的链式存储结构 48
3.2 栈的应用举例 49
3.2.1 表达式求值 49
3.2.2 递归的实现 52
3.3 队列 55
3.3.1 队列的定义和操作 55
3.3.2 队列的顺序存储结构 56
3.3.3 队列的链式存储结构 60
3.4 队列的应用举例 62
习题三 64
上机实习题二 66
4 串 67
4.1 串的基本概念和存储结构 67
4.1.1 串的基本概念 67
4.1.2 串的存储结构 69
4.1.3 串变量的存储 71
4.2 串的基本运算 71
4.2.1 串的联接 73
4.2.3 子串的插入和删除 74
4.2.2 求子串 74
4.2.4 串的置换 75
4.3 串的模式匹配算法 76
4.3.1 求子串位置的定位函数 76
4.3.2 模式匹配的一种改进算法 79
4.4 汉字串 84
习题四 87
5 数组和广义表 88
5.1 数组及其运算 88
5.2 数组的顺序存储结构 89
5.3 矩阵的压缩存储 91
5.4 广义表 104
5.4.1 广义表的定义 104
5.4.2 广义表的存储结构 105
5.4.3 广义表的运算 107
5.5 m元多项式的表示 108
习题五 110
上机实习题三 110
6.1 树的基本概念和术语 112
6 树 112
6.2 二叉树 115
6.2.1 二叉树的定义 115
6.2.2 二叉树的性质 116
6.2.3 二叉树的存储结构 117
6.2.4 二叉树的应用--二叉搜索树 119
6.3 遍历二叉树 121
6.3.1 遍历二叉树的定义及递归算法 121
6.3.2 按前序序列建二叉树 122
6.3.3 遍历二叉树的非递归算法 123
6.3.4 二叉树算法举例 125
6.4 线索二叉树 128
6.5 树和森林 131
6.5.1 树的存储结构 131
6.5.2 森林与二叉树的转换 133
6.5.3 树与森林的遍历 134
6.6 哈夫曼树 135
6.6.1 基本术语 135
6.6.2 构造哈夫曼树 136
6.6.3 哈夫曼编码 136
6.6.4 哈夫曼算法的实现 137
6.7 回溯法与树的遍历 140
习题六 142
上机实习题四 143
7 图 144
7.1 图的概念及术语 144
7.2 图的存储结构 146
7.2.1 邻接矩阵 146
7.2.2 邻接表 148
7.2.3 邻接多重表 150
7.3 图的遍历 151
7.3.1 深度优先搜索遍历 152
7.3.2 广度优先搜索遍历 153
7.4 最小生成树 154
7.4.1 生成树和最小生成树 154
7.4.2 普里姆算法 155
7.4.3 克鲁斯卡尔算法 157
7.5 最短路径 158
7.5.1 求从一个顶点到其他各顶点的最短路径 158
7.5.2 求每一对顶点之间的最短路径 160
7.6 拓扑排序 162
习题七 165
上机实习题五 166
8 检索 168
8.1 检索的基本概念 168
8.2 线性表的检索 169
8.2.1 顺序检索 169
8.2.2 折半检索 170
8.2.3 分块检索 174
8.3 树表的检索 176
8.3.1 二叉排序树 177
8.3.2 平衡的二叉检索树 183
8.4 B树 185
8.5 Hash检索技术 189
8.5.1 Hash表技术 189
8.6 哈希表的检索及分析 193
习题八 195
上机实习题六 196
9 排序 198
9.1 排序的基本概念 198
9.2.1 直接插入排序 199
9.2 插入排序 199
9.2.2 希尔排序 202
9.2.3 其他插入排序 205
9.3 交换排序 208
9.3.1 冒泡排序 208
9.3.2 快速排序 210
9.4 选择排序 214
9.4.1 直接选择排序 214
9.4.2 堆排序 216
9.5 归并排序 220
9.6 基数排序 223
9.7 内部顺序方法的比较和选择 226
9.8 外排序简介 226
习题九 227
上机实习题七 228
10 文件 230
10.1 文件的基本概念 230
10.2 顺序文件 231
10.3 索引文件 231
10.3.1 ISAM文件 232
10.3.2 VSAM文件 234
10.4 散列文件 235
10.5 多关键字文件 236
10.5.1 多重表文件 236
10.5.2 倒排文件 237
习题十 238
附录一 关键词索引 239
附录二 算法索引 243
参考文献 246