项目一 数据结构基本知识 2
任务:建立数学模型 2
任务描述 2
任务分析 2
准备知识 2
1.数据结构概述 2
2.基本术语 3
3.数据的存储结构 6
4.算法及算法分析 8
5.C语言预备知识 14
任务实施 21
项目小结 23
项目考核 23
项目二 线性表及其应用 26
任务一:利用顺序表对数据进行升序排序 26
任务描述 26
任务分析 26
准备知识 26
1.线性表概述 26
2.线性表的抽象数据类型和基本操作 27
3.线性表的顺序存储结构 31
任务实施 41
任务二:使用单链表对数据进行升序排序 42
任务描述 42
任务分析 42
准备知识 43
1.单链表 43
2.双向链表 53
3.循环链表 59
任务实施 59
项目小结 61
项目考核 61
项目三 栈的使用 64
任务:利用栈判断括号匹配情况 64
任务描述 64
任务分析 64
准备知识 64
1.栈的概述 64
2.栈的抽象数据类型和基本操作 64
3.栈的顺序存储结构 65
4.栈的链式存储结构 69
5.递归的概述 71
6.河内塔(Hanoi tower)问题 72
任务实施 74
项目小结 78
项目考核 78
项目四 队列及其应用 80
任务:使用队列模拟打印机打印顺序 80
任务描述 80
任务分析 80
准备知识 80
1.队列的概述 80
2.队列的抽象数据类型和基本操作 81
3.队列的顺序存储结构 82
4.顺序队列的改进——循环队列 86
5.队列的链式存储结构 88
任务实施 93
项目小结 96
项目考核 96
项目五 字符串及其应用 98
任务:使用字符串统计英文单词 98
任务描述 98
任务分析 98
准备知识 98
1.字符串的概述 98
2.字符串的抽象数据类型和基本操作 99
3.字符串的顺序存储结构 101
4.字符串的堆存储结构 106
5.字符串的块链存储结构 109
任务实施 111
项目小结 112
项目考核 112
项目六 树及二叉树 114
任务一:计算二叉树的前序遍历序列 114
任务描述 114
任务分析 114
准备知识 114
1.树结构 114
2.树形结构的种类 115
3.树的相关术语 115
4.二叉树的概述 116
5.满二叉树和完全二叉树 116
6.二叉树的性质 117
7.二叉树的抽象数据类型和基本操作 118
8.顺序存储结构 119
9.链式存储结构 120
10.二叉树的遍历 125
11.线索二叉树的概述 130
12.中序线索二叉树的构造和遍历 131
任务实施 135
任务二:使用Huffman树编写C语言程序 138
任务描述 138
任务分析 138
准备知识 138
1.霍夫曼树相关术语 139
2.霍夫曼树构造 140
任务实施 140
项目小结 143
项目考核 143
项目七 树、森林及二叉树 146
任务:实现深度为3的树 146
任务描述 146
任务分析 146
准备知识 146
1.树的概述 146
2.树和二叉树的三个主要差别 147
3.森林的概述 147
4.树的抽象数据类型和基本操作 147
5.树的遍历 148
6.森林的遍历 149
7.树的存储结构 149
8.树与二叉树的相互转换 152
9.森林与二叉树的相互转换 153
10.K叉树 153
任务实施 154
项目小结 161
项目考核 161
项目八 图形结构 164
任务:实现图的遍历 164
任务描述 164
任务分析 164
准备知识 164
1.图的定义与基本术语 164
2.图的概述 164
3.图的相关术语 165
4.图的抽象数据类型和基本操作 167
5.邻接矩阵表示法 168
6.邻接表表示法 174
7.十字链表 181
8.邻接多重表 183
9.深度优先搜索 186
10.广度优先搜索 189
11.最短路径问题 193
12.单源最短路径问题 194
13.狄克斯特拉(Dikastra)算法 195
14.最小生成树 199
15.最小生成树的性质 199
16.构造最小生成树的算法 199
17.拓扑排序 210
18.AOV网 210
19.拓扑排序(Topological Sort) 211
任务实施 214
项目小结 218
项目考核 218
项目九 排序 220
任务:使用选择排序输出结果 220
任务描述 220
任务分析 220
准备知识 220
1.排序的概述 220
2.排序分类 221
3.直接插入排序 221
4.冒泡排序 224
5.直接选择排序 226
6.简单排序算法的时间代价对比 227
7.Shell排序 227
8.快速排序 230
9.归并排序 234
10.堆排序 239
11.多关键码排序 244
12.链式基数排序 244
任务实施 247
项目小结 249
项目考核 249
项目十 查找 252
任务:使用哈希法输出最大值 252
任务描述 252
任务分析 252
准备知识 252
1.查找的基本概念 252
2.顺序查找 254
3.二分查找 258
4.分块查找 261
5.二叉排序树 264
6.平衡二叉排序树 270
7.B树和B+树 271
8.哈希表的概述 275
9.哈希函数的构造方法 276
10.处理冲突的方法 278
11.哈希表的实现 280
12.哈希表的查找分析 284
任务实施 285
项目小结 292
项目考核 292
参考文献 294