第1章 绪论 1
1.1学习数据结构的意义 1
1.2基本概念 3
1.2.1数据和数据结构 3
1.2.2数据类型 5
1.2.3抽象数据类型 5
1.2.4数据结构的符号描述举例 6
1.3算法和算法描述 7
1.3.1算法概念和特征 7
1.3.2算法设计要求 8
1.3.3算法描述 8
1.4算法的性能分析 9
1.4.1时间复杂度 9
1.4.2空间复杂度 11
1.4.3分析算法时间复杂度举例 11
习题 12
第2章 线性表 14
2.1线性表的含义及ADT描述 14
2.2顺序存储结构 16
2.2.1顺序表的存储表示 16
2.2.2顺序表的基本操作的实现 17
2.2.3顺序表的基本操作的时间复杂度分析 22
2.2.4顺序表的优缺点 22
2.2.5顺序存储结构的应用 23
2.3链式存储结构 25
2.3.1单链表的存储表示 25
2.3.2单链表基本操作的实现 26
2.3.3循环链表的表示和基本操作的实现 34
2.3.4双向循环链表的表示和基本操作的实现 37
2.3.5链式存储结构的应用 38
习题 42
第3章 栈和队列 44
3.1栈 44
3.1.1栈的定义及ADT描述 44
3.1.2栈的顺序存储结构 45
3.1.3栈的链式存储结构 47
3.1.4栈的应用 49
3.2队列 52
3.2.1队列的定义及ADT描述 52
3.2.2队列的顺序存储结构 54
3.2.3队列的链式存储结构 56
3.2.4队列的应用 58
习题 64
第4章 串和数组 67
4.1串 67
4.1.1串的定义及ADT描述 67
4.1.2串的存储结构 69
4.1.3常见串函数 70
4.1.4串的应用举例 73
4.2数组 75
4.2.1数组的定义及ADT描述 75
4.2.2数组的存储结构 77
4.2.3矩阵的压缩存储 79
4.2.4矩阵转置 87
4.2.5数组的应用举例 90
习题 93
第5章 树和二叉树 95
5.1树 95
5.1.1树的概念及ADT描述 95
5.1.2树的存储结构 97
5.1.3综合应用举例 100
5.2二叉树 102
5.2.1二叉树的概念及ADT描述 102
5.2.2二叉树的性质 103
5.2.3二叉树的存储结构 106
5.2.4遍历二叉树 108
5.2.5遍历算法的应用 110
5.2.6树、森林与二叉树的转换 113
5.2.7二叉树的综合应用 116
5.3树和森林的遍历 121
5.3.1树的遍历 121
5.3.2森林的遍历 122
5.3.3树和森林的遍历应用 123
5.4哈夫曼树及应用 124
5.4.1哈夫曼树 124
5.4.2判定树 126
5.4.3前缀编码 127
习题 129
第6章图 131
6.1图的概述 131
6.1.1图的概念 131
6.1.2图的ADT描述 133
6.2图的存储结构 134
6.2.1邻接矩阵 134
6.2.2邻接表 139
6.2.3应用举例 146
6.3图的遍历 147
6.3.1深度优先遍历 147
6.3.2广度优先遍历 148
6.3.3应用举例 149
6.4最小生成树问题 150
6.4.1图的生成树和最小生成树 150
6.4.2最小生成树构造 151
6.4.3应用举例 155
6.5有向无环图及应用 156
6.5.1基本定义 156
6.5.2拓扑排序 157
6.5.3关键路径 160
习题 163
第7章 查找 165
7.1基本概念 165
7.2静态查找 166
7.2.1顺序查找 166
7.2.2折半查找 168
7.2.3折半查找应用举例 170
7.3动态查找 171
7.3.1二叉排序树 171
7.3.2二叉排序树的查找 172
7.3.3二叉排序树的插入 173
7.3.4二叉排序树的删除 175
7.3.5二叉排序树的应用举例 178
7.4哈希表 179
7.4.1哈希表的概念 179
7.4.2哈希函数的构造 180
7.4.3冲突处理的方法 181
7.4.4哈希表查找及其分析 184
7.4.5哈希表查找应用举例 185
习题 186
第8章 排序 188
8.1基本概念 188
8.2插入排序 189
8.2.1直接插入排序 189
8.2.2希尔排序 191
8.2.3应用举例 193
8.3交换排序 194
8.3.1冒泡排序 194
8.3.2快速排序 196
8.3.3应用举例 199
8.4选择排序 200
8.4.1简单选择排序 201
8.4.2堆排序 202
8.4.3应用举例 205
8.5归并排序 208
8.5.1归并排序的基本思想 208
8.5.2 2-路归并排序算法 209
8.5.3应用举例 210
8.6基数排序 211
8.6.1基数排序的基本思想 211
8.6.2链式基数排序算法 215
8.6.3应用举例 217
8.6.4排序方法简单比较 218
习题 218
参考文献 220