第1章 绪论 1
1.1 数据结构的研究内容 1
1.2 基本概念和术语 4
1.2.1 数据、数据元素、数据项和数据对象 4
1.2.2 数据结构 4
1.2.3 数据类型和抽象数据类型 8
1.3 算法与数据结构 12
1.3.1 数据结构上的基本运算 13
1.3.2 算法的定义及特性 14
1.3.3 算法分析 14
1.4 本章小结 25
习题1 26
第2章 线性表 29
2.1 线性表的概念及其抽象数据类型定义 29
2.1.1 线性表的逻辑结构 29
2.1.2 线性表的抽象数据类型定义 30
2.2 线性表的顺序存储 31
2.2.1 线性表的顺序存储结构 31
2.2.2 线性表顺序存储结构上的基本运算 33
2.3 线性表的链式存储 36
2.3.1 单链表 36
2.3.2 单链表上的基本运算 37
2.3.3 循环链表 43
2.3.4 双向链表 44
2.3.5 静态链表 46
2.4 线性表应用——一元多项式的表示及相加 47
2.5 顺序表与链表的综合比较 50
2.5.1 顺序表和链表的比较 50
2.5.2 线性表链式存储方式的比较 51
2.6 本章小结 51
习题2 52
第3章 限定性线性表——栈与队列 55
3.1 栈 55
3.1.1 栈的定义 55
3.1.2 栈的表示和实现 57
3.1.3 栈的应用举例 61
3.2 队列 63
3.2.1 队列的定义 63
3.2.2 队列的表示和实现 65
3.2.3 队列的应用举例 70
3.3 本章小结 73
习题3 74
第4章 串 76
4.1 串的基本概念 76
4.1.1 串的定义 76
4.1.2 串的基本操作 77
4.2 串的存储实现 79
4.2.1 定长顺序串表示 79
4.2.2 堆分配存储表示 82
4.2.3 串的链接存储表示 84
4.2.4 子串定位运算的实现 86
4.3 串的应用举例 88
4.4 本章小结 89
习题4 90
第5章 数组和广义表 92
5.1 数组的定义与基本操作 92
5.1.1 数组的定义 92
5.1.2 数组的基本操作 93
5.2 数组的顺序存储和实现 93
5.2.1 数组的顺序存储结构 93
5.2.2 数组的顺序存储的实现 95
5.3 特殊矩阵的压缩存储 96
5.3.1 规律分布的特殊矩阵 96
5.3.2 稀疏矩阵 98
5.4 广义表 100
5.4.1 广义表的概念 101
5.4.2 广义表的存储结构 102
5.4.3 广义表的操作实现 104
5.5 本章小结 106
习题5 106
第6章 树与二叉树 109
6.1 树的定义与基本术语 109
6.2 二叉树 111
6.2.1 二叉树的定义与基本操作 112
6.2.2 二叉树的性质 112
6.2.3 二叉树的存储结构 114
6.3 二叉树的遍历与线索化 116
6.3.1 二叉树的遍历 116
6.3.2 遍历算法应用 119
6.3.3 线索二叉树 122
6.3.4 由遍历序列确定二叉树 126
6.4 树、森林和二叉树的关系 127
6.4.1 树的存储结构 127
6.4.2 树、森林与二叉树的相互转换 129
6.4.3 树与森林的遍历 132
6.5 哈夫曼树及其应用 134
6.5.1 哈夫曼树 134
6.5.2 哈夫曼编码 136
6.6 本章小结 138
习题6 138
第7章 图 141
7.1 图的定义与基本术语 141
7.1.1 图的定义 141
7.1.2 图的基本术语 141
7.2 图的存储结构 143
7.2.1 邻接矩阵表示法 143
7.2.2 邻接表表示法 145
7.2.3 十字链表 146
7.2.4 邻接多重表 148
7.3 图的遍历 149
7.3.1 深度优先搜索 149
7.3.2 广度优先搜索 150
7.4 图的应用 152
7.4.1 图的连通性问题 152
7.4.2 有向无环图的应用 156
7.4.3 最短路径问题 160
7.5 本章小结 162
习题7 162
第8章 查找 164
8.1 查找的基本概念 164
8.2 顺序查找法 165
8.3 折半查找法 166
8.4 散列表及其查找 169
8.4.1 常用的散列函数 170
8.4.2 处理冲突的方法 171
8.4.3 散列表的查找分析 175
8.5 本章小结 177
习题8 177
第9章 内部排序 179
9.1 排序的概念 179
9.1.1 排序的稳定性 179
9.1.2 排序用到的结构与操作 179
9.2 插入排序 180
9.2.1 直接插入排序 180
9.2.2 直接插入排序复杂度分析 181
9.2.3 其他插入排序 181
9.3 交换排序 184
9.3.1 最简单的交换排序 184
9.3.2 冒泡排序 184
9.3.3 冒泡排序的优化 185
9.3.4 快速排序 186
9.4 选择排序 189
9.4.1 简单选择排序 189
9.4.2 树形选择排序 190
9.4.3 堆排序 191
9.5 归并排序 196
9.6 基数排序 196
9.6.1 多关键字排序 196
9.6.2 链式基数排序 197
9.7 内部排序算法的分析和比较 198
9.8 本章小结 199
习题9 200
第10章 数据结构课程实训 202
10.1 系统设计的要求 202
10.1.1 系统总体结构设计 202
10.1.2 系统详细设计 204
10.1.3 系统调试和维护 205
10.2 文件的包含处理 206
10.2.1 什么是文件包含 206
10.2.2 如何对“数据结构实验系统”进行文件包含 208
10.2.3 “数据结构实验系统”主控模块 209
10.3 数据结构课程设计 210
10.3.1 课程设计的目的 210
10.3.2 课程设计的内容 210
10.3.3 课程设计报告 211
10.3.4 课程设计的考核 212
10.4 课程设计的要求 212
10.5 课程设计题目 213
参考文献 220