**章 绪论 1
1.1 数据结构的起源 1
1.2 什么是数据结构 2
1.3 逻辑结构与物理结构 3
1.3.1 逻辑结构 3
1.3.2 物理结构 4
1.4 抽象数据类型 5
1.4.1 数据类型 5
1.4.2 抽象数据类型 6
1.4.3 抽象数据类型的实现方法 7
1.5 算法 8
1.5.1 算法的基本概念 8
1.5.2 算法的性能评价 9
1.5.3 算法描述 16
1.6 数据结构与算法设计课程的地位及
主要内容 16
习题与训练 18
第二章 线性表 20
2.1 线性表的定义及逻辑结构 20
2.1.1 线性表的定义 20
2.1.2 线性表的基本操作 21
2.2 线性表的顺序存储结构 22
2.2.1 顺序表 22
2.2.2 顺序表上插入与删除操作���实现 24
2.2.3 顺序表应用举例 27
2.3 线性表的链式存储结构 28
2.3.1 单链表 29
2.3.2 单链表上基本运算的实现 31
2.3.3 循环单链表 37
2.3.4 静态链表 38
2.3.5 双向链表 41
2.3.6 链表应用举例 43
2.4 顺序表和链表的比较 44
习题与训练 45
第三章 栈和队列 50
3.1 栈的定义及其逻辑结构 50
3.1.1 栈的定义 50
3.1.2 基本操作 51
3.2 栈的存储结构 51
3.2.1 栈的顺序存储结构 51
3.2.2 两个栈的共享空间 53
3.2.3 栈的链式存储结构 55
3.3 栈的应用举例 57
3.4 栈与递归 63
3.4.1 栈与递归的实现过程 63
3.4.2 汉诺塔 66
3.5 队列的定义及基本运算 71
3.5.1 队列的定义 71
3.5.2 基本运算 72
3.6 队列的存储结构及操作实现 72
3.6.1 顺序队列 72
3.6.2 循环队列 74
3.6.3 链队列 76
习题与训练 79
第四章 串 80
4.1 串的定义及其基本运算 80
4.1.1 串的基本概念 80
4.1.2 串的基本运算 81
4.2 串的顺序存储及基本运算 81
4.2.1 串的顺序存储 82
4.2.2 基本运算的实现 82
4.3 串的堆存储结构 88
4.3.1 堆存储结构 88
4.3.2 串名的存储映象 89
4.3.3 基于堆结构的基本运算 90
4.4 块链串 91
4.5 KMP模式匹配算法 91
4.5.1 KMP模式匹配算法的原理 91
4.5.2 next函数 93
4.5.3 KMP算法实现 94
习题与训练 96
第五章 数组和广义表 97
5.1 数组 97
5.1.1 数组的逻辑结构 97
5.1.2 数组的存储结构 98
5.2 特殊矩阵的压缩存储 99
5.2.1 对称矩阵 100
5.2.2 三角矩阵 101
5.2.3 带状矩阵 102
5.3 稀疏矩阵的压缩存储 103
5.3.1 稀疏矩阵的三元组表存储 103
5.3.2 稀疏矩阵的十字链表存储** 107
5.4 广义表 109
5.4.1 广义表的定义和基本运算 109
5.4.2 广义表的存储 111
习题与训练 112
第六章 二叉树与树 114
6.1 二叉树 114
6.1.1 二叉树的定义 114
6.1.2 二叉树的基本概念 115
6.1.3 二叉树的主要性质 116
6.2 二叉树的存储结构 119
6.2.1 顺序存储结构 119
6.2.2 链式存储结构 120
6.3 二叉树的遍历 122
6.3.1 二叉树遍历的递归实现 122
6.3.2 二叉树遍历的非递归实现** 125
6.3.3 二叉树的层次遍历 128
6.3.4 遍历序列恢复二叉树 129
6.3.5 遍历二叉树的应用 131
6.4 线索二叉树** 132
6.5 树和森林 136
6.5.1 树和森林的定义 136
6.5.2 树的存储结构 137
6.5.3 树和森林的遍历 143
6.6 哈夫曼树及其应用 144
6.6.1 哈夫曼树的基本概念 144
6.6.2 哈夫曼树的构造算法 147
6.6.3 哈夫曼树编码 148
6.6.4 应用举例 150
习题与训练 152
第七章 图 154
7.1 图的基本概念 154
7.1.1 图的定义和种类 154
7.1.2 相关术语 156
7.1.3 图的基本操作 158
7.2 图的存储结构 159
7.2.1 邻接矩阵 159
7.2.2 邻接表 163
7.2.3 十字链表** 167
7.2.4 邻接多重表** 168
7.3 图的遍历 169
7.3.1 深度优先遍历 170
7.3.2 广度优先遍历 174
7.4 图的连通性问题 177
7.4.1 无向图的连通性 177
7.4.2 *小生成树 178
7.5 *短路径 182
7.5.1 求某一源点到其余各顶点的
*短路径 183
7.5.2 求任意一对顶点的*短路径 185
7.6 有向无环图的应用 188
7.6.1 AOV网与拓扑排序 189
7.6.2 AOE图与关键路径** 193
习题与训练 197
第八章 查找 200
8.1 基本概念 200
8.2 静态查找表 202
8.2.1 顺序表 202
8.2.2 有序顺序表 203
8.2.3 索引顺序表 208
8.2.4 倒排表 209
8.3 动态查找表 210
8.3.1 二叉排序树 210
8.3.2 平衡二叉树** 218
8.3.3 B树** 222
8.4 哈希表的查找 227
8.4.1 什么是哈希表 227
8.4.2 哈希函数的构造方法 228
8.4.3 处理冲突的方法 230
8.4.4 哈希表的查找过程 232
习题与训练 235
第九章 排序 237
9.1 排序的基础知识 237
9.1.1 排序的基本概念 237
9.1.2 排序的分类 238
9.1.3 存储结构 238
9.2 简单排序方法 239
9.2.1 简单选择排序 239
9.2.2 直接插入排序 241
9.2.3 希尔排序 245
9.2.4 起泡排序 247
9.3 先进排序方法 248
9.3.1 快速排序 248
9.3.2 归并排序 252
9.3.3 堆排序 254
9.3.4 基数排序** 258
9.4 各种内部排序方法的综合比较 263
习题与训练 265
第十章 经典算法介绍 266
10.1 分治法 266
10.2 贪婪法 268
10.3 回溯法 270
10.4 动态规划法 274
习题与训练 278
参考文献 280