第1章 绪论 1
1.1 数据结构课程的研究内容 1
1.2 基本概念及术语 2
1.3 算法与算法分析 5
1.3.1 算法 5
1.3.2 算法分析 7
本章小结 9
习题1 10
上机实验题1 11
第2章 线性表 12
2.1 线性表的基本概念 12
2.2 线性表的存储结构 12
2.2.1 顺序存储结构 13
2.2.2 链式存储结构 14
2.3 线性表的操作算法 16
2.3.1 顺序表的操作算法 16
2.3.2 链表的操作算法 21
2.4 线性表的应用 29
2.5 顺序表和链表的综合比较 33
本章小结 33
习题2 34
上机实验题2 34
第3章 栈和队列 36
3.1 栈 36
3.1.1 栈的基本概念 36
3.1.2 栈的存储结构 36
3.1.3 栈的操作算法 38
3.1.4 栈的应用 41
3.2 队列 46
3.2.1 队列的基本概念 46
3.2.2 队列的存储结构 47
3.2.3 队列的操作算法 49
3.2.4 队列的应用 51
本章小结 52
习题3 52
上机实验题3 53
第4章 串 54
4.1 串的基本概念 54
4.2 串的存储结构 54
4.2.1 串的顺序存储结构 54
4.2.2 串的链式存储结构 55
4.3 串的操作算法 55
4.3.1 串的基本操作算法 56
4.3.2 串的模式匹配 57
4.3.3 串的应用——文本编辑软件 62
本章小结 63
习题4 63
上机实验题4 64
第5章 数组和特殊矩阵 65
5.1 数组 65
5.1.1 数组的基本概念 65
5.1.2 数组的存储结构 65
5.2 特殊矩阵的压缩存储 66
5.2.1 对称矩阵的压缩存储 67
5.2.2 三角矩阵的压缩存储 67
5.2.3 对角矩阵的压缩存储 68
5.2.4 稀疏矩阵的压缩存储 69
本章小结 74
习题5 74
上机实验题5 74
第6章 广义表 76
6.1 广义表的基本概念 76
6.2 广义表的存储结构 77
6.2.1 广义表中结点的结构 77
6.2.2 广义表的存储结构举例 77
6.3 广义表的操作算法 79
6.3.1 构造算法 79
6.3.2 遍历广义表 80
6.3.3 广义表算法举例 81
本章小结 83
习题6 83
上机实验题6 84
第7章 树和二叉树 85
7.1 树的概念和性质 85
7.1.1 树的定义 85
7.1.2 树的基本术语 86
7.1.3 树的基本性质 87
7.2 二叉树的概念和性质 88
7.2.1 二叉树的定义 88
7.2.2 二叉树的基本性质 89
7.3 二叉树的存储结构 91
7.3.1 二叉树的顺序存储结构 91
7.3.2 二叉树的链式存储结构 92
7.4 二叉树的遍历 95
7.4.1 二叉树遍历的概念 95
7.4.2 二叉树遍历算法 98
7.4.3 二叉树的构造和析构算法 100
7.5 二叉树的其他操作算法 104
7.6 线索二叉树 107
7.6.1 线索二叉树的概念 107
7.6.2 线索二叉树的存储结构 109
7.6.3 线索二叉树的操作算法 109
7.7 树的存储结构与算法 113
7.7.1 树的存储结构 113
7.7.2 树的操作算法 118
7.8 Huffman树与Huffman编码 122
7.8.1 Huffman树的定义 122
7.8.2 Huffman树的构造 123
7.8.3 Huffman编码与译码 126
7.8.4 Huffman树的其他应用——程序设计流程优化 127
7.9 树与等价类 129
7.9.1 等价类问题 129
7.9.2 等价类的实现 129
7.9.3 性能分析与改进 130
本章小结 132
习题7 132
上机实验题7 133
第8章 图 135
8.1 图的基本概念 135
8.1.1 图的定义 135
8.1.2 图的基本术语 136
8.2 图的存储结构 139
8.2.1 邻接矩阵表示法 139
8.2.2 邻接表表示法 142
8.3 图的遍历 144
8.3.1 图的遍历的概念 144
8.3.2 深度优先搜索 145
8.3.3 广度优先搜索 146
8.3.4 图的遍历算法的应用 148
8.4 最小生成树 150
8.4.1 最小生成树的概念及其性质 150
8.4.2 Prim算法 151
8.4.3 Kruskal算法 154
8.5 最短路径 156
8.5.1 最短路径的概念 156
8.5.2 单源最短路径 156
8.5.3 每对顶点之间的最短路径 160
8.6 AOV网与拓扑排序 163
8.6.1 有向无环图与AOV网的概念 163
8.6.2 拓扑排序 164
8.7 AOE网与关键路径 166
8.7.1 AOE网的概念 166
8.7.2 关键路径 167
本章小结 168
习题8 169
上机实验题8 170
第9章 查找 171
9.1 查找的基本概念 171
9.2 顺序表的查找 172
9.2.1 顺序查找 172
9.2.2 折半查找 173
9.2.3 分块查找 176
9.3 树表的查找 177
9.3.1 二叉排序树 177
9.3.2 平衡二叉树 183
9.3.3 B树 185
9.3.4 B+树 190
9.4 Hash查找 191
9.4.1 Hash查找的基本概念 191
9.4.2 Hash表的构造 192
9.4.3 Hash查找算法及分析 196
本章小结 197
习题9 197
上机实验题9 199
第10章 排序 200
10.1 排序的基本概念 200
10.2 冒泡排序 201
10.3 选择排序 202
10.4 插入排序 203
10.4.1 直接插入排序 203
10.4.2 折半插入排序 205
10.5 希尔排序 205
10.6 快速排序 207
10.7 堆排序 209
10.8 归并排序 214
10.8.1 二路归并排序的非递归实现 214
10.8.2 二路归并排序的递归实现 216
10.9 基数排序 217
10.9.1 多关键字排序 217
10.9.2 链式基数排序 218
本章小结 219
习题10 221
上机实验题10 222
附录A 数据结构试题 223
附录B 数据结构课程设计题 230
参考文献 231