学习情境0 程序设计语言基础 1
0.1 任务一 开发环境 1
0.1.1 子任务1 下载开发软件 1
0.1.2 子任务2 JDK的安装和配置 2
0.1.3 子任务3 NetBeans IDE的安装和配置 4
0.1.4 子任务4 编写及运行程序 6
0.2 任务二 编写程序的基础 7
0.2.1 子任务1 创建随机数 8
0.2.2 子任务2 封装与修饰符 10
0.2.3 子任务3 Java程序编写规范 12
0.2.4 子任务4 方法的重载和覆盖 13
0.3 任务三 构建简单操作菜单 18
0.3.1 子任务1 输入/输出 18
0.3.2 子任务2 程序控制 20
0.3.3 子任务3 异常处理 26
0.4 任务四 图形界面与事件处理 29
0.4.1 子任务1 图形界面演示 29
0.4.2 子任务2 图形演示系统的构建过程 31
0.4.3 子任务3 按钮事件处理 32
0.4.4 子任务4 编写并运行主程序 33
0.5 任务五 文件读/写操作 33
0.5.1 子任务1 创建目录和文件 33
0.5.2 子任务2 读取文件内容 34
学习情境1 认识数据 结构与算法 36
1.1 任务一 初识数据结构和算法 36
1.1.1 子任务1 什么是数据结构和算法 36
1.1.2 子任务2 数据结构与算法的重要性 36
1.1.3 子任务3 数据结构与算法课程 37
1.2 任务二 数据结构 37
1.2.1 子任务1 数据的处理 37
1.2.2 子任务2 数据结构的分类 38
1.2.3 子任务3 常用的数据结构 39
1.3 任务三 算法 41
1.3.1 子任务1 认识算法 41
1.3.2 子任务2 算法的重要特征 42
1.3.3 子任务3 算法分析 42
1.3.4 子任务4 算法设计方法 43
1.3.5 子任务5 递归算法及案例 43
学习情境2 线性表 50
2.1 任务一 认识线性表 50
2.1.1 子任务1 初识线性表 50
2.1.2 子任务2 认识线性表的存储结构 51
2.2 任务二 程序实现线性表的顺序存储结构及操作 52
2.2.1 子任务1 认识线性表的顺序存储结构 52
2.2.2 子任务2 线性表顺序存储结构的操作算法 52
2.2.3 子任务3 程序实现线性表顺序存储结构的操作 57
2.3 任务三 程序实现线性表的链式存储结构及操作 68
2.3.1 子任务1 认识线性表的链式存储结构 68
2.3.2 子任务2 线性表链式存储结构的操作算法 69
2.3.3 子任务3 程序实现线性表链式存储结构的操作 75
2.4 任务四 线性表的应用——解决约瑟夫环问题 81
2.4.1 子任务1 认识约瑟夫环 81
2.4.2 子任务2 约瑟夫环的程序实现 82
学习情境3 栈和队列 86
3.1 任务一 栈 86
3.1.1 子任务1 认识栈 86
3.1.2 子任务2 操作栈的顺序存储结构 87
3.1.3 子任务3 操作栈的链式存储结构 91
3.2 任务二 队列 96
3.2.1 子任务1 认识队列 96
3.2.2 子任务2 操作队列的顺序存储结构 97
3.2.3 子任务3 操作栈的链式存储结构 101
3.3 任务三 整合栈和队列的操作 105
3.3.1 子任务1 构造主程序 105
3.3.2 子任务2 构造菜单程序 106
学习情境4 串 113
4.1 任务一 认识串 113
4.1.1 子任务1 初识串 113
4.1.2 子任务2 串的基本运算 114
4.2 任务二 串的存储结构 114
4.2.1 子任务1 串的顺序存储结构 114
4.2.2 子任务2 串的链式存储结构 115
4.3 任务三 程序实现串的操作 115
4.3.1 子任务1 串的基本操作和算法 115
4.3.2 子任务2 创建主程序菜单 118
学习情境5 树和二叉树 125
5.1 任务一 认识树 125
5.1.1 子任务1 树的基础知识 125
5.1.2 子任务2 学习树的术语 126
5.1.3 子任务3 树的表示 127
5.2 任务二 二叉树 128
5.2.1 子任务1 认识二叉树 128
5.2.2 子任务2 二叉树的基本性质 129
5.2.3 子任务3 二叉树的存储结构 130
5.3 任务三 二叉树操作的程序实现 132
5.3.1 子任务1 构造二叉树的程序实现框架 132
5.3.2 子任务2 二叉树算法的程序实现 134
5.4 任务四 哈夫曼(Huffman)树 149
5.4.1 子任务1 认识哈夫曼树和哈夫曼编码 149
5.4.2 子任务2 树的路径长度 151
5.4.3 子任务3 哈夫曼编码的程序实现 152
学习情境6 图 159
6.1 任务一 认识图 159
6.1.1 子任务1 初识图 159
6.1.2 子任务2 再识图 161
6.2 任务二 图的表示 163
6.2.1 子任务1 图的邻接矩阵表示 163
6.2.2 子任务2 图的邻接表表示 164
6.3 任务三 图的遍历 165
6.3.1 子任务1 图的深度优先搜索遍历 166
6.3.2 子任务2 图的广度优先搜索遍历 166
6.4 任务四 图的应用 167
6.4.1 子任务1 最小生成树 167
6.4.2 子任务2 最短路径 169
6.4.3 子任务3 拓扑排序 170
6.5 任务五 图的程序实现 171
6.5.1 子任务1 构造图的遍历抽象类 172
6.5.2 子任务2 程序实现图的邻接矩阵表示 174
6.5.3 子任务3 程序实现图的邻接表表示 183
6.5.4 子任务4 存储图邻接矩阵的文件读/写实现 189
6.5.5 子任务5 图的应用的程序实现 193
学习情境7 排序 197
7.1 任务一 认识排序 197
7.1.1 子任务1 学习排序基础知识 197
7.1.2 子任务2 排序算法的指标分析 198
7.1.3 子任务3 程序算法的程序实现基础 198
7.2 任务二 插入排序 203
7.2.1 子任务1 直接插入排序 204
7.2.2 子任务2 希尔排序 206
7.3 任务三 交换排序 207
7.3.1 子任务1 冒泡排序 208
7.3.2 子任务2 快速排序 209
7.4 任务四 选择排序 212
7.4.1 子任务1 直接选择排序 212
7.4.2 子任务2 堆排序 213
7.5 任务五 归并排序——两路归并排序 217
7.5.1 子任务1 归并排序 217
7.5.2 子任务2 归并排序的程序实现 218
7.6 任务六 基数排序 219
7.6.1 子任务1 认识基数排序 220
7.6.2 子任务2 基数排序程序实现 220
学习情境8 查找与演示项目开发 225
8.1 任务一 认识查找 225
8.2 任务二 线性表的查找 225
8.2.1 子任务1 顺序查找 226
8.2.2 子任务2 折半查找 227
8.2.3 子任务3 分块索引查找 238
8.3 任务三 二叉排序树查找 239
8.3.1 子任务1 认识二叉排序树查找 239
8.3.2 子任务2 二叉排序树查找的图形演示项目 240
8.4 任务四 哈希表 255
8.4.1 子任务1 认识哈希表 255
8.4.2 子任务2 哈希函数的构造 255
8.4.3 子任务3 冲突及处理 256
8.4.4 子任务4 哈希表操作演示项目 257
参考文献 264