第1部分 预备篇 1
第1章 数据结构和算法概述 2
1.1 数据结构的基本概念 2
1.1.1 学习数据结构的意义 2
1.1.2 有关概念和术语 4
1.2 算法的概念及其特性 7
1.2.1 算法的定义 7
1.2.2 算法的三要素 7
1.2.3 算法的基本性质 8
1.2.4 算法的基本特征 8
1.2.5 算法设计的要求 8
1.3 算法分析和评价 9
1.3.1 算法的时间复杂度 9
1.3.2 算法的空间复杂度 11
1.4 小结 11
1.5 习题 12
第2章 学生信息管理设计 15
2.1 系统设计 15
2.2 数据库设计 16
2.3 公共模块设计 17
第2部分 业务篇 23
第3章 学生基本信息管理(顺序表) 24
3.1 知识要点 24
3.2 模块功能描述 24
3.3 知识准备 24
3.3.1 线性表的定义和性质 24
3.3.2 顺序表的定义和性质 25
3.4 业务实现 26
3.5 算法分析 31
3.6 小结 31
3.7 习题 32
第4章 学生成绩信息管理(链表) 34
4.1 知识要点 34
4.2 模块功能描述 34
4.3 知识准备 35
4.3.1 链表的基本概念和存储方式 35
4.3.2 单向链表含义 35
4.4 业务实现 36
4.5 知识扩展 42
4.5.1 循环链表 42
4.5.2 双向链表 43
4.6 小结 45
4.7 习题 46
第5章 学生基本信息审核(栈) 49
5.1 知识要点 49
5.2 模块功能描述 49
5.3 知识准备 49
5.3.1 栈的基本概念 49
5.3.2 栈的存储结构 50
5.4 业务实现 51
5.5 知识扩展 53
5.6 小结 54
5.7 习题 55
第6章 学生成绩信息的审核(队列) 57
6.1 知识要点 57
6.2 模块功能描述 57
6.3 知识准备 57
6.3.1 队列概念 57
6.3.2 顺序队列 58
6.4 业务实现 59
6.5 知识扩展(链队列) 61
6.6 小结 62
6.7 习题 62
第7章 树和二叉树 64
7.1 知识要点 64
7.2 树的概念和操作 64
7.2.1 树的概念 64
7.2.2 树的基本术语 65
7.2.3 树的基本运算 67
7.3 二叉树的概念和性质 67
7.3.1 二叉树的定义 67
7.3.2 二叉树的性质 69
7.3.3 二叉树的存储结构 72
7.4 知识扩展(二叉树遍历) 73
7.4.1 二叉树遍历的递归算法 73
7.4.2 二叉树遍历的非递归算法 75
7.4.3 二叉树算法举例 77
7.5 小结 78
7.6 习题 78
第8章 查找 82
8.1 知识要点 82
8.2 功能描述 82
8.3 知识准备 83
8.4 业务实现 84
8.4.1 顺序查找 84
8.4.2 折半查找 87
8.4.3 索引查找 91
8.4.4 哈希查找 95
8.5 小结 104
8.6 习题 104
第9章 排序 107
9.1 知识要点 107
9.2 功能描述 107
9.3 知识准备 108
9.4 业务实现 109
9.4.1 直接插入排序 109
9.4.2 折半插入排序 112
9.4.3 冒泡排序 115
9.4.4 快速排序 118
9.4.5 选择排序 121
9.5 小结 124
9.6 习题 124
第10章 班长评选(循环算法) 127
10.1 知识要点 127
10.2 功能描述 127
10.3 知识准备 128
10.4 业务实现 128
10.5 知识扩展 132
10.5.1 长整数问题 132
10.5.2 由具体到抽象设计循环结构的案例 134
10.6 习题 136
第11章 班委评选(递归算法) 138
11.1 知识要点 138
11.2 功能描述 138
11.3 知识准备 139
11.4 业务实现 139
11.5 知识扩展 141
11.6 递归算法与循环算法的比较 143
11.7 习题 144
第12章 迭代算法 145
12.1 知识要点 145
12.2 迭代算法概念和设计要点 145
12.3 递推法 146
12.4 倒推法 147
12.5 迭代法求解方程 147
12.6 习题 149
第13章 学生评优(蛮力法) 151
13.1 知识要点 151
13.2 功能描述 151
13.3 知识准备 152
13.4 业务实现 152
13.5 知识扩展 154
13.6 习题 155
第14章 优差生评选(分治法) 157
14.1 知识要点 157
14.2 功能描述 157
14.3 知识准备 158
14.4 业务实现 158
14.5 知识扩展 160
14.5.1 二分不独立问题 160
14.5.2 非等分分治法问题 162
14.6 习题 163
第15章 优秀团队组建(贪婪算法) 165
15.1 知识要点 165
15.2 功能描述 165
15.3 知识准备 165
15.4 业务实现 166
15.5 其他贪婪算法 170
15.5.1 可绝对贪婪问题 170
15.5.2 相对贪婪问题 172
15.6 习题 173
第3部分 实践篇 175
实验1 数据库与数据访问层 176
实验2 学生基本信息管理(顺序表实现) 177
实验3 学生成绩信息管理(单向链表实现) 184
实验4 学生基本信息审核(栈的实现) 190
实验5 学生成绩信息审核(队列实现) 196
实验6 学生信息查找 201
实验7 学生信息排序 205
实验8 班长评选(循环算法) 209
实验9 班委评选(递归算法) 212
实验10 优秀学生评选(蛮力算法) 217
实验11 最优最差生评选(分治算法) 220
实验12 优秀团队组建(贪婪算法) 223
实验13 课程设计 226
参考文献 228