知识技能篇 3
单元1 数据结构与算法 3
引例描述——矩阵乘积算法分析 4
知识储备 4
1.1 数据结构的概念 5
1.2 数据的逻辑结构与存储结构 6
1.3 算法及算法分析 7
1.3.1 算法及其特性 7
1.3.2 算法分析 8
引例分析 11
同步训练 12
一、单项选择题 12
二、问题解答题 13
单元2 线性表 15
引例描述——体育彩票的生成和中奖查询 16
知识储备 17
2.1 线性表 17
2.1.1 线性表的定义 17
2.1.2 线性表的基本操作 18
2.2 顺序表及其基本操作 19
2.2.1 顺序表(Sequence List) 19
2.2.2 顺序表的基本操作的实现 21
2.3 单链表及其基本操作 25
2.3.1 链表的有关概念 25
2.3.2 链表的基本操作 26
2.4 循环链表和双向链表 35
2.4.1 循环链表(Circular Linked List) 35
2.4.2 双向链表 35
2.5 线性表的应用 38
引例分析与实现 40
同步训练 47
一、单项选择题 47
二、问题解答题 51
三、算法设计题 53
单元3 栈和队列 55
引例描述——数制转换 56
知识储备 56
3.1 栈 56
3.1.1 栈的定义及基本操作 56
3.1.2 顺序栈及基本操作的实现 57
3.1.3 链栈及基本操作的实现 60
3.2 队列 62
3.2.1 队列的定义及基本操作 62
3.2.2 顺序队列及基本操作 63
3.2.3 循环队列 64
3.2.4 链队列及基本操作的实现 67
引例分析与实现 70
同步训练 75
一、单项选择题 75
二、问题解答题 78
三、算法设计题 80
单元4 树与二叉树 81
引例描述——文本文件的加密和解密 82
知识储备 82
4.1 树的概念 82
4.1.1 树的递归定义 83
4.1.2 树结构的基本术语 83
4.1.3 树形结构的逻辑特征 85
4.2 二叉树及其性质 86
4.2.1 二叉树的定义 86
4.2.2 二叉树的性质 86
4.3 二叉树的存储结构 89
4.3.1 二叉树的顺序存储结构 89
4.3.2 二叉树的链式存储结构 91
4.4 二叉树的遍历 93
4.4.1 遍历方案 93
4.4.2 遍历序列 95
4.5 二叉树的基本操作 97
4.5.1 二叉链表的建立 98
4.5.2 二叉链表的基本操作 98
4.6 树和森林 101
4.6.1 树、森林到二叉树的转换 101
4.6.2 树的存储结构 103
4.6.3 树的遍历 106
4.7 哈夫曼树及其应用 107
4.7.1 哈夫曼树(Huffman Tree)的有关概念 107
4.7.2 哈夫曼树的构造 108
4.7.3 哈夫曼算法的实现 110
4.7.4 哈夫曼编码 112
引例分析与实现 116
同步训练 123
一、单项选择题 123
二、问题解答题 126
三、算法设计题 128
单元5 图 129
引例描述——城市间公路网建设最经济方案 130
知识储备 131
5.1 图的概念 131
5.2 图的存储结构 135
5.2.1 图的邻接矩阵表示法 135
5.2.2 图的邻接表表示法 137
5.3 图的遍历 140
5.3.1 图的深度优先遍历 140
5.3.2 图的广度优先遍历 142
5.4 生成树和最小生成树 145
5.4.1 生成树 145
5.4.2 最小生成树 146
5.5 最短路径 149
5.5.1 单源最短路径问题 150
5.5.2 迪杰斯特拉(Dijkstra)算法 150
5.6 拓扑排序 152
5.6.1 拓扑排序定义 152
5.6.2 拓扑排序的方法 154
引例分析与实现 155
同步训练 158
一、单项选择题 158
二、问题解答题 159
三、算法设计题 160
单元6 排序 161
引例描述——不同排序算法的比较 162
知识储备 162
6.1 排序的基本概念 162
6.2 插入排序 164
6.2.1 直接插入排序(Straight Insertion Sort) 164
6.2.2 希尔排序(Shell Sort) 166
6.3 交换排序 168
6.3.1 冒泡排序(Bubble Sort) 168
6.3.2 快速排序(Quick Sort) 169
6.4 选择排序 173
6.4.1 直接选择排序(Straight Select Sort) 173
6.4.2 堆排序 175
6.5 归并排序 183
6.5.1 两路归并排序 183
6.5.2 归并排序方法 184
6.6 分配排序 187
6.6.1 箱排序(Bin Sort) 187
6.6.2 桶排序(Bucket Sort) 188
6.6.3 基数排序(Radix Sort) 190
引例分析与实现 193
同步训练 200
一、单项选择题 200
二、问题解答题 202
三、算法设计题 203
单元7 查找 205
引例描述——高校最低录取分数线查询 206
知识储备 207
7.1 查找的基本概念 207
7.2 静态查找 207
7.2.1 顺序查找(Sequential Search) 207
7.2.2 二分查找(Binary Search) 209
7.2.3 分块查找(Block Search) 210
7.3 动态查找 211
7.3.1 二叉排序树(Binary Sort Tree) 211
7.3.2 二叉排序树上的运算 212
7.4 哈希查找 217
7.4.1 哈希表(Hash Table) 217
7.4.2 哈希函数的构造 218
7.4.3 处理冲突的方法 219
引例分析与实现 221
同步训练 227
一、单项选择题 227
二、问题解答题 228
三、算法设计题 229
技术应用篇 233
单元8 综合实训项目 233
8.1 算术表达式求值 234
8.1.1 总体设计 234
8.1.2 详细设计 236
8.1.3 完整代码 243
8.2 文件目录搜索 248
8.2.1 总体设计 248
8.2.2 详细设计 250
8.2.3 完整代码 253
参考文献 258