第1章 绪论 1
1.1 数据结构的基本概念 1
1.1.1 为什么要学习数据结构 1
1.1.2 什么是数据结构 2
1.1.3 基本概念和术语 3
1.1.4 数据类型与抽象数据类型 5
1.2 算法和算法分析简介 7
1.2.1 算法 7
1.2.2 算法的描述 7
1.2.3 算法评价 13
本章小结 14
习题一 14
第2章 线性表 15
2.1 线性表的逻辑结构 15
2.2 线性表的顺序存储结构 16
2.2.1 线性表的顺序存储结构 16
2.2.2 线性表在顺序存储结构下的运算 17
2.3 线性表的链式存储结构 22
2.3.1 线性链表 22
2.3.2 循环链表 27
2.3.3 双向链表 27
2.4 一元多项式的表示及相加 30
本章小结 34
习题二 34
第3章 栈和队列 35
3.1 栈 35
3.1.1 栈的定义及其运算 35
3.1.2 栈的顺序存储结构 37
3.1.3 栈的链式存储结构 38
3.2 算术表达式求值 40
3.3 队列 44
3.3.1 队列的定义及其运算 44
3.3.2 队列的顺序存储结构 46
3.3.3 队列的链式存储结构 51
3.3.4 其他队列 52
本章小结 53
习题三 54
第4章 串 55
4.1 串的基本概念 55
4.1.1 串的定义 55
4.1.2 主串和子串 55
4.2 串的存储结构 56
4.2.1 串值的存储 56
4.2.2 串名的存储映像 57
4.3 串的基本运算及其实现 58
4.3.1 串的基本运算 58
4.3.2 串的基本运算及其实现 59
4.4 文本编辑 62
本章小结 63
习题四 64
第5章 多维数组和广义表 65
5.1 多维数组 65
5.1.1 多维数组的概念 65
5.1.2 多维数组在计算机内的存放 66
5.2 多维数组的存储结构 66
5.2.1 行优先顺序 66
5.2.2 列优先顺序 66
5.3 特殊矩阵及其压缩存储 67
5.3.1 特殊矩阵 67
5.3.2 压缩存储 68
5.4 稀疏矩阵 70
5.4.1 稀疏矩阵的存储 70
5.4.2 稀疏矩阵的运算 75
5.5 广义表 82
5.5.1 基本概念 82
5.5.2 存储结构 83
5.5.3 基本运算 86
本章小结 87
习题五 88
第6章 树 90
6.1 树的结构定义与基本操作 90
6.1.1 树的定义及相关术语 90
6.1.2 树的存储结构 91
6.1.3 树的基本操作 92
6.2 二叉树 92
6.2.1 二叉树的定义与基本操作 92
6.2.2 二叉树的性质 94
6.2.3 二叉树的存储结构 95
6.2.4 树与二叉树的相互转换 99
6.3 遍历二叉树 100
6.3.1 先序遍历 101
6.3.2 中序遍历 102
6.3.3 后序遍历 103
6.3.4 层次遍历 104
6.4 线索二叉树 105
6.4.1 线索二叉树的基本概念 105
6.4.2 中序次序线索化算法 107
6.5 二叉排序树 111
6.5.1 二叉排序树的定义 112
6.5.2 二叉排序树的生成 112
6.5.3 删除二叉排序树上的结点 115
6.6 哈夫曼树和哈夫曼算法 117
6.6.1 哈夫曼树的定义 118
6.6.2 构造哈夫曼树——哈夫曼算法 119
6.6.3 哈夫曼树的应用 120
本章小结 122
习题六 123
第7章 图 124
7.1 基本定义和术语 124
7.1.1 基本定义和术语 124
7.1.2 抽象数据类型 126
7.2 图的存储结构 129
7.2.1 邻接矩阵 129
7.2.2 邻接表 130
7.3 图的遍历 132
7.3.1 深度优先搜索法 132
7.3.2 广度优先搜索法 135
7.4 最小生成树 137
7.5 最短路径 143
7.5.1 单源点最短路径 143
7.5.2 所有顶点对之间的最短路径 146
7.6 拓扑排序 150
本章小结 151
习题七 152
第8章 查找 154
8.1 顺序查找 154
8.2 折半查找 155
8.3 分块查找 157
8.4 哈希法 158
8.4.1 哈希表和哈希函数的概念 159
8.4.2 哈希函数的构造方法 159
8.4.3 冲突处理 161
本章小结 164
习题八 165
第9章 排序 166
9.1 插入排序 166
9.1.1 线性插入排序 166
9.1.2 折半插入排序 168
9.2 希尔排序 169
9.3 选择排序 171
9.4 堆排序 173
9.5 快速排序 176
9.6 归并排序 180
9.7 基数排序 182
9.8 外部排序 183
9.9 各种排序方法的比较 185
本章小结 186
习题九 186
第10章 文件 187
10.1 文件的基本概念 187
10.2 顺序文件 188
10.3 索引文件 190
10.4 索引顺序文件 191
10.5 直接存取文件 192
10.6 多关键字文件 194
10.6.1 多重表文件 194
10.6.2 倒排文件 195
本章小结 196
习题十 196
参考文献 197