第1章 绪论 1
1.1什么是数据结构 1
1.1.1学习数据结构的目的 1
1.1.2有关概念和术语 4
1.2数据类型和抽象数据类型 6
1.2.1数据类型 6
1.2.2抽象数据类型 6
1.3算法与算法分析 8
1.3.1算法的特性 8
1.3.2算法描述 10
1.3.3算法效率的度量 10
本章小结 13
习题1 13
第2章 线性表 16
2.1线性表的逻辑结构 16
2.1.1线性表的定义 16
2.1.2线性表的抽象数据类型 17
2.2线性表的顺序存储与实现 18
2.2.1顺序表 18
2.2.2顺序表基本操作的实现 19
2.2.3顺序表应用举例 23
2.3线性表的链式存储与实现 25
2.3.1单链表 25
2.3.2单链表上基本运算的实现 27
2.3.3单链表的应用 30
2.3.4循环链表 31
2.3.5双向链表 32
2.3.6静态链表 33
2.4一元多项式的表示及加法实现 36
2.5应用实例——约瑟夫环问题 38
本章小结 42
习题2 42
第3章 限定性线性表——栈和队列 46
3.1栈 46
3.1.1栈的定义 46
3.1.2栈的表示和实现 47
3.2栈的应用举例 52
3.3队列 56
3.3.1队列的定义 56
3.3.2队列的表示和实现 57
3.4队列的应用举例 62
3.5应用实例——银行排队服务模拟 63
本章小结 68
习题3 68
第4章 串、数组和广义表 72
4.1串的定义 72
4.2串的表示和实现 73
4.2.1定长顺序存储表示 74
4.2.2堆分配存储表示 75
4.2.3串的块链存储表示 77
4.3模式匹配 77
4.3.1简单模式匹配 78
4.3.2一种改进的模式匹配 79
4.4数组 81
4.4.1数组的定义 81
4.4.2数组的顺序存储与实现 82
4.4.3矩阵的压缩存储 83
4.5广义表 91
4.5.1广义表的定义 91
4.5.2广义表的存储结构 92
4.6应用实例——投票选举 93
本章小结 96
习题4 97
第5章 树和二叉树 100
5.1树的基本概念 100
5.1.1树的定义 100
5.1.2树的基本术语 102
5.2二叉树 104
5.2.1二叉树的定义 104
5.2.2二叉树的性质 105
5.2.3二叉树的存储结构 107
5.3二叉树的遍历 110
5.3.1二叉树的遍历算法 110
5.3.2二叉树遍历算法的应用 112
5.4线索二叉树 114
5.4.1线索二叉树的定义 114
5.4.2二叉树的线索化 115
5.4.3线索二叉树的遍历 117
5.5树和森林 118
5.5.1树的存储结构 118
5.5.2森林与二叉树的转换 121
5.5.3树和森林的遍历 122
5.6哈夫曼树及其应用 123
5.6.1基本术语 123
5.6.2构造哈夫曼树 124
5.6.3哈夫曼树的应用 127
5.7应用实例——并查集 129
本章小结 132
习题5 133
第6章 图 136
6.1图的基本概念 136
6.1.1图的定义 136
6.1.2图的基本术语 137
6.2图的存储结构 141
6.2.1邻接矩阵 141
6.2.2邻接表 143
6.2.3有向图的十字链表 146
6.2.4无向图的邻接多重表 147
6.3图的遍历 149
6.3.1深度优先搜索 149
6.3.2广度优先搜索 151
6.4无向图的连通分量和生成树 152
6.5图的应用 153
6.5.1最小生成树 153
6.5.2有向无环图与拓扑排序 157
6.5.3关键路径 161
6.5.4最短路径 166
6.6应用实例——畅通工程 171
本章小结 175
习题6 175
第7章 查找 179
7.1查找的基本概念 179
7.2静态查找 180
7.2.1顺序查找 181
7.2.2折半查找 183
7.2.3分块查找 185
7.3动态查找 187
7.3.1二叉排序树 187
7.3.2平衡二叉树 194
7.3.3 B树 203
7.4哈希表 204
7.4.1哈希表的概念 205
7.4.2哈希函数的构造 205
7.4.3处理冲突的方法 207
7.4.4哈希表查找及其分析 209
7.5应用实例——通讯录查询系统 210
本章小结 217
习题7 218
第8章 排序 221
8.1排序的基本概念 221
8.2插入排序 222
8.2.1直接插入排序 223
8.2.2折半插入排序 224
8.2.3希尔排序 225
8.3交换排序 227
8.3.1冒泡排序 227
8.3.2快速排序 229
8.4选择排序 232
8.4.1简单选择排序 232
8.4.2堆排序 233
8.5归并排序 237
8.6基数排序 239
8.6.1多关键字排序 239
8.6.2链式基数排序 240
8.7内部排序方法比较 244
8.8应用实例——内部排序算法比较 246
本章小结 255
习题8 256
参考文献 260