第1章 绪论 1
1.1 问题求解过程 1
1.2 数据结构的基本概念 3
1.2.1 实例 3
1.2.2 基本概念与术语 5
1.3 算法 9
1.3.1 算法的基本概念 9
1.3.2 算法的基本特性 9
1.4 算法描述 10
1.4.1 基本控制结构的描述 10
1.4.2 C语言算法描述规定 12
1.5 算法分析 15
1.5.1 算法的评价标准 15
1.5.2 算法的时间复杂度 16
1.5.3 算法的空间复杂度 17
小结 18
习题 18
第2章 线性表 21
2.1 基本概念 21
2.1.1 线性表的定义 21
2.1.2 线性表的逻辑结构 22
2.1.3 线性表的基本运算 22
2.2 线性表的顺序存储结构 23
2.2.1 顺序表 23
2.2.2 顺序表的基本运算 25
2.3 线性表的链式存储结构 29
2.3.1 链表 29
2.3.2 单链表 30
2.3.3 单链表的基本运算 32
2.3.4 循环链表 36
2.3.5 双链表 38
2.4 顺序表与链表的比较 39
2.5 线性表的应用 40
2.5.1 顺序表运算的综合实例 40
2.5.2 一元多项式的表示及相加 42
小结 47
习题 48
第3章 栈 53
3.1 基本概念 53
3.1.1 栈的概念 53
3.1.2 栈的基本运算 54
3.2 栈的顺序存储结构 54
3.2.1 顺序栈 54
3.2.2 顺序栈的基本运算 55
3.3 栈的链式存储结构 56
3.3.1 链式栈 56
3.3.2 链式栈的基本运算 57
3.4 栈的应用 58
3.4.1 数制转换问题 58
3.4.2 西文编辑器 61
3.4.3 括号匹配问题 62
小结 65
习题 65
第4章 队列 69
4.1 基本概念 69
4.1.1 队列的概念 69
4.1.2 队列的基本运算 70
4.2 队列的顺序存储结构 70
4.2.1 顺序队列 70
4.2.2 顺序队列的基本运算 71
4.2.3 循环队列 72
4.2.4 循环队列的基本运算 74
4.3 队列的链式存储结构 75
4.3.1 链队列 75
4.3.2 链队列的基本运算 75
4.4 队列的应用 77
4.4.1 舞伴问题 77
4.4.2 看病排队候诊问题 79
小结 81
习题 81
第5章 串 85
5.1 基本概念 85
5.1.1 串的定义 85
5.1.2 串的术语 85
5.1.3 串的基本运算 86
5.2 串的存储结构 87
5.2.1 串的顺序存储结构 87
5.2.2 串的链式存储结构 91
5.2.3 串的堆式存储 92
5.3 串的应用 93
5.3.1 KMP算法实现串的模式匹配 93
5.3.2 最长公共子串 95
小结 97
习题 97
第6章 数组和广义表 99
6.1 数组的基本概念 99
6.1.1 数组的定义 99
6.1.2 数组的相关运算 100
6.2 数组的顺序存储结构 100
6.3 矩阵的压缩存储 101
6.3.1 特殊矩阵 101
6.3.2 稀疏矩阵 103
6.4 广义表 104
6.4.1 广义表的基本概念 104
6.4.2 广义表的表头和表尾 105
6.5 数组的应用 106
6.5.1 魔方阵 106
6.5.2 稀疏矩阵的加法运算 109
小结 115
习题 115
第7章 树和二叉树 119
7.1 树的基本概念 119
7.1.1 树的定义 119
7.1.2 树的基本术语 119
7.1.3 树的基本运算 121
7.2 二叉树的基本概念 121
7.2.1 二叉树的定义 121
7.2.2 二叉树的性质 122
7.3 二叉树的存储结构 123
7.3.1 顺序存储结构 123
7.3.2 链式存储结构 124
7.4 二叉树的遍历 125
7.4.1 先序遍历 126
7.4.2 中序遍历 126
7.4.3 后序遍历 126
7.4.4 层次遍历 127
7.5 线索二叉树 128
7.5.1 线索二叉树的概念 128
7.5.2 中序线索二叉树的构造算法 129
7.5.3 线索二叉树的遍历 130
7.6 哈夫曼树及其应用 131
7.6.1 哈夫曼树的定义 131
7.6.2 构造哈夫曼树 132
7.6.3 哈夫曼树的应用 134
7.7 树、森林与二叉树的关系 135
7.7.1 树的存储结构 135
7.7.2 森林与二叉树的转换 137
7.7.3 树与森林的遍历 138
7.8 二叉树的应用 139
7.8.1 由遍历确定二叉树 139
7.8.2 电文的编码和译码 142
小结 147
习题 147
第8章 图 151
8.1 图的基本概念 151
8.1.1 图的定义 151
8.1.2 图的基本术语 152
8.2 图的存储结构 153
8.2.1 邻接矩阵 153
8.2.2 邻接表 154
8.3 图的遍历 158
8.3.1 深度优先搜索算法 158
8.3.2 广度优先搜索算法 159
8.4 最小生成树 160
8.4.1 Prim算法 161
8.4.2 Kruskal算法 164
8.5 最短路径 166
8.6 拓扑排序 168
8.7 图的应用 171
8.7.1 地铁建设问题 171
8.7.2 安排教学计划 175
小结 178
习题 178
第9章 排序 183
9.1 基本概念 183
9.2 插入排序 184
9.2.1 直接插入排序 185
9.2.2 希尔排序 187
9.3 交换排序 188
9.3.1 冒泡排序 188
9.3.2 快速排序 190
9.4 选择排序 193
9.4.1 简单选择排序 193
9.4.2 堆排序 194
9.5 归并排序 197
9.6 各种排序方法的比较 199
9.7 排序的应用 201
9.7.1 排序的综合实例 201
9.7.2 希尔排序应用实例 204
小结 206
习题 207
第10章 查找 211
10.1 基本概念 211
10.2 静态查找表 212
10.2.1 顺序查找 212
10.2.2 折半查找 214
10.3 动态查找表 218
10.3.1 二叉排序树 218
10.3.2 平衡二叉树 223
10.3.3 B-树 225
10.4 哈希表 229
10.4.1 哈希表的概念 229
10.4.2 哈希函数的构建 230
10.4.3 处理冲突 232
10.4.4 哈希表的查找及其分析 234
10.5 查找的应用 235
10.5.1 查找方法综合实例 235
10.5.2 二分查找应用实例 238
小结 241
习题 241
参考文献 244