第1章 绪论 1
1.1 什么是数据结构 1
1.1.1 数据结构的定义 1
1.1.2 逻辑结构及存储结构类型 2
1.1.3 基本概念和术语 3
1.2 抽象数据类型的表示与实现 3
1.3 算法和算法分析 3
1.3.1 什么是算法 3
1.3.2 算法描述 4
1.3.3 算法分析 5
专项练习1 6
第2章 线性表 9
2.1 线性表的基本概念 9
2.2 线性表的顺序存储——顺序表 10
2.2.1 定义顺序表 10
2.2.2 顺序表上的运算及其实现 11
2.3 线性表的链式存储一——单链表 14
2.3.1 线性表的链式存储——链表 14
2.3.2 单链表的定义 15
2.3.3 单链表上的基本运算及其实现 15
2.4 线性表的链式存储二——双链表 20
2.5 循环链表 22
项目实训 22
专项练习2 41
第3章 栈和队列 45
3.1 栈的定义及基本运算 45
3.2 顺序栈的存储结构及算法实现 46
3.2.1 顺序栈 46
3.2.2 顺序栈的基本运算实现 46
3.3 栈的链表存储结构 48
3.3.1 栈的定义 48
3.3.2 顺序栈的基本运算实现 48
3.4 应用实例的实现 50
3.4.1 表达式中括号配对的合法性检查 50
3.4.2 表达式求值 50
3.4.3 递归调用 52
3.5 队列的结构及其运算 56
3.5.1 队列的基本操作 56
3.5.2 链队的存储结构及其运算 61
3.6 栈的应用举例 62
3.7 栈与队列比较 64
项目实训 64
专项练习3 71
第4章 串 75
4.1 串的基本概念 75
4.1.1 串的定长顺序存储及运算实现 76
4.1.2 串的堆式动态存储及运算实现 80
4.1.3 串的块链存储表示 83
4.2 串的模式匹配算法 84
4.2.1 串的简单模式匹配算法 84
4.2.2 一种改进的模式匹配算法 86
项目实训 90
专项练习4 94
第5章 数组和广义表 98
5.1 数组的定义 98
5.2 数组的顺序表示和实现 99
5.3 矩阵的压缩存储 99
5.3.1 特殊矩阵 100
5.3.2 稀疏矩阵 100
5.4 广义表的定义 104
5.5 广义表的存储结构 105
项目实训 106
专项练习5 109
第6章 树和二叉树 115
6.1 树的定义和基本术语 115
6.1.1 树的定义 115
6.1.2 树的表示 115
6.1.3 树的基本术语 117
6.1.4 树的术语 117
6.1.5 树的基本运算 117
6.1.6 树的存储结构 118
6.2 二叉树 119
6.2.1 二叉树的定义 119
6.2.2 二叉树的重要性质 119
6.2.3 二叉树与树、森林之间的转换 121
6.3 二叉树的存储结构 122
6.3.1 二叉树的顺序存储结构 122
6.3.2 二叉树的链式存储结构 122
6.4 二叉树的遍历和线索二叉树 123
6.4.1 二叉树遍历的概念 123
6.4.2 二叉树遍历算法 123
6.4.3 二叉树线索的概念 124
6.4.4 线索化二叉树 125
6.5 二叉树的基本运算及其实现 127
6.5.1 二叉树基本运算概述 127
6.5.2 二叉树基本运算的算法实现 127
6.6 哈夫曼树及其应用 130
6.6.1 哈夫曼树的概念 130
6.6.2 构造哈夫曼树 130
6.6.3 哈夫曼编码 131
项目实训 131
专项练习6 135
第7章 图及图的应用 140
7.1 图的基本概念 140
7.1.1 图的定义 140
7.1.2 图的相关术语 141
7.2 图的存储结构 144
7.2.1 邻接矩阵 144
7.2.2 邻接表和逆邻接表 146
7.3 图的遍历 148
7.3.1 深度优先搜索 148
7.3.2 广度优先搜索 150
7.4 图的应用 151
7.4.1 最小生成树 151
7.4.2 最短路径 156
7.4.3 拓扑排序 159
项目实训 161
专项练习7 173
第8章 查找 177
8.1 静态查找表 177
8.1.1 顺序表的查找 177
8.1.2 有序表的查找 178
8.1.3 索引顺序表的查找 180
8.2 哈希表 181
8.2.1 什么是哈希表 181
8.2.2 哈希函数的构造方法 182
8.2.3 处理冲突的方法 182
项目实训 183
专项练习8 186
第9章 排序 192
9.1 基本概念 192
9.2 插入排序 193
9.2.1 直接插入排序 193
9.2.2 希尔排序 195
9.3 交换排序 196
9.3.1 冒泡排序 196
9.3.2 快速排序 197
9.4 选择排序 200
9.4.1 简单选择排序 200
9.4.2 堆排序 201
9.5 归并排序 207
9.5.1 归并排序的过程 207
9.5.2 归并排序的算法 207
9.5.3 算法分析 209
9.6 各种内部排序的比较 209
项目实训 209
专项练习9 215
第10章 文件 220
10.1 文件的基本概念 220
10.1.1 什么是文件 220
10.1.2 文件的逻辑结构及操作 221
10.1.3 文件的存储结构 221
10.2 顺序文件 221
10.3 索引文件 222
10.3.1 索引文件概述 222
10.3.2 ISAM文件 223
10.3.3 VSAM文件 224
10.4 哈希文件 224
项目实训 225
专项练习10 230
习题答案 233
参考文献 257