- 科学出版社
- 9787030763228
- 1版
- 514322
- 46258955-7
- 2024-03
- 计算机类
- 高职
内容简介
本书共8个单元,主要介绍了线性表、栈和队列、树和二叉树、图等常用数据结构的基本概念、逻辑结构、存储结构、具体实现和案例应用等;还介绍了递归、排序、查找等常用算法的设计、实现和性能分析。每个单元以任务为主线贯穿组织,由任务(包括知识准备、任务实施)、知识拓展、阅读材料、单元小结、习题等部分组成。全书使用Java语言描述数据结构和算法,围绕典型任务,引导读者思考问题,对问题进行建模及与对应的数据结构相联系,设计并实现数据结构,并将其作为一种自己打造的“工具”应用于具体问题的解决。本书提供教学课件、微课视频、动画演示视频、习题答案、参考程序代码、教学大纲、实验指导等丰富的教学资源,并配套在线开放课程学习平台,方便教师教学和学生学习。本书可作为高等职业教育计算机类相关专业“数据结构”课程的教材,也可供计算机软件开发人员或编程爱好者参考使用。
目录
单元1 认识数据结构与算法 1
任务1.1 认识数据结构 1
1.1.1 知识准备 1
1.1.2 任务实施 12
任务1.2 设计简单的数据结构 13
1.2.1 知识准备 13
1.2.2 任务实施 17
任务1.3 认识算法 17
1.3.1 知识准备 18
1.3.2 任务实施 26
知识拓展:泛型实现代码复用 26
阅读材料:智能时代——从数据到大数据 26
单元小结 27
习题 27
单元2 线性表 30
任务2.1 认识线性表 30
2.1.1 知识准备 30
2.1.2 任务实施 32
任务2.2 顺序表的实现 33
2.2.1 知识准备 33
2.2.2 任务实施 40
任务2.3 单链表的实现 41
2.3.1 知识准备 41
2.3.2 任务实施 51
任务2.4 线性表的应用 52
2.4.1 知识准备 52
2.4.2 任务实施 59
知识拓展:其他类型的链表 60
阅读材料:科技史话——古老的手工计算机 60
单元小结 60
习题 61
单元3 栈和队列 64
任务3.1 栈的定义和实现 64
3.1.1 知识准备 64
3.1.2 任务实施 75
任务3.2 队列的定义和实现 76
3.2.1 知识准备 76
3.2.2 任务实施 83
任务3.3 栈和队列的应用 83
3.3.1 知识准备 84
3.3.2 任务实施 92
知识拓展:优先级队列 92
阅读材料:中国计算机事业的先驱——夏培肃 92
单元小结 93
习题 94
单元4 递归 96
任务4.1 认识递归 96
4.1.1 知识准备 96
4.1.2 任务实施 100
任务4.2 递归算法设计 101
4.2.1 知识准备 101
4.2.2 任务实施 104
知识拓展:栈与递归 104
阅读材料:“汉字激光照排之父”王选 104
单元小结 105
习题 105
单元5 树和二叉树 107
任务5.1 认识树和二叉树 107
5.1.1 知识准备 107
5.1.2 任务实施 113
任务5.2 二叉树的实现 113
5.2.1 知识准备 113
5.2.2 任务实施 124
任务5.3 二叉树的应用 124
5.3.1 知识准备 124
5.3.2 任务实施 126
知识拓展:线索二叉树 哈夫曼树 树和森林 127
阅读材料:软件历程——金山WPS 127
单元小结 127
习题 128
单元6 图 130
任务6.1 图的定义和存储 130
6.1.1 知识准备 130
6.1.2 任务实施 139
任务6.2 图的遍历 140
6.2.1 知识准备 140
6.2.2 任务实施 146
任务6.3 求最小生成树 147
6.3.1 知识准备 147
6.3.2 任务实施 154
任务6.4 寻找最短路径 155
6.4.1 知识准备 156
6.4.2 任务实施 163
知识拓展:图的邻接表存储、拓扑排序、关键路径 165
阅读材料:创新创业——寻找自己的风口 165
单元小结 166
习题 166
单元7 排序 169
任务7.1 基本排序算法 169
7.1.1 知识准备 169
7.1.2 任务实施 180
任务7.2 高级排序算法 181
7.2.1 知识准备 181
7.2.2 任务实施 192
任务7.3 在线性表中实现排序算法 193
7.3.1 知识准备 194
7.3.2 任务实施 198
知识拓展:归并排序、基数排序 198
阅读材料:软件工程师的职业道德 199
单元小结 199
习题 199
单元8 查找 202
任务8.1 线性表查找 202
8.1.1 知识准备 202
8.1.2 任务实施 211
任务8.2 哈希表查找 212
8.2.1 知识准备 212
8.3.2 任务实施 220
知识拓展:平衡二叉树、B树 221
阅读材料:程序员的工匠精神 221
单元小结 222
习题 222
参考文献 224
任务1.1 认识数据结构 1
1.1.1 知识准备 1
1.1.2 任务实施 12
任务1.2 设计简单的数据结构 13
1.2.1 知识准备 13
1.2.2 任务实施 17
任务1.3 认识算法 17
1.3.1 知识准备 18
1.3.2 任务实施 26
知识拓展:泛型实现代码复用 26
阅读材料:智能时代——从数据到大数据 26
单元小结 27
习题 27
单元2 线性表 30
任务2.1 认识线性表 30
2.1.1 知识准备 30
2.1.2 任务实施 32
任务2.2 顺序表的实现 33
2.2.1 知识准备 33
2.2.2 任务实施 40
任务2.3 单链表的实现 41
2.3.1 知识准备 41
2.3.2 任务实施 51
任务2.4 线性表的应用 52
2.4.1 知识准备 52
2.4.2 任务实施 59
知识拓展:其他类型的链表 60
阅读材料:科技史话——古老的手工计算机 60
单元小结 60
习题 61
单元3 栈和队列 64
任务3.1 栈的定义和实现 64
3.1.1 知识准备 64
3.1.2 任务实施 75
任务3.2 队列的定义和实现 76
3.2.1 知识准备 76
3.2.2 任务实施 83
任务3.3 栈和队列的应用 83
3.3.1 知识准备 84
3.3.2 任务实施 92
知识拓展:优先级队列 92
阅读材料:中国计算机事业的先驱——夏培肃 92
单元小结 93
习题 94
单元4 递归 96
任务4.1 认识递归 96
4.1.1 知识准备 96
4.1.2 任务实施 100
任务4.2 递归算法设计 101
4.2.1 知识准备 101
4.2.2 任务实施 104
知识拓展:栈与递归 104
阅读材料:“汉字激光照排之父”王选 104
单元小结 105
习题 105
单元5 树和二叉树 107
任务5.1 认识树和二叉树 107
5.1.1 知识准备 107
5.1.2 任务实施 113
任务5.2 二叉树的实现 113
5.2.1 知识准备 113
5.2.2 任务实施 124
任务5.3 二叉树的应用 124
5.3.1 知识准备 124
5.3.2 任务实施 126
知识拓展:线索二叉树 哈夫曼树 树和森林 127
阅读材料:软件历程——金山WPS 127
单元小结 127
习题 128
单元6 图 130
任务6.1 图的定义和存储 130
6.1.1 知识准备 130
6.1.2 任务实施 139
任务6.2 图的遍历 140
6.2.1 知识准备 140
6.2.2 任务实施 146
任务6.3 求最小生成树 147
6.3.1 知识准备 147
6.3.2 任务实施 154
任务6.4 寻找最短路径 155
6.4.1 知识准备 156
6.4.2 任务实施 163
知识拓展:图的邻接表存储、拓扑排序、关键路径 165
阅读材料:创新创业——寻找自己的风口 165
单元小结 166
习题 166
单元7 排序 169
任务7.1 基本排序算法 169
7.1.1 知识准备 169
7.1.2 任务实施 180
任务7.2 高级排序算法 181
7.2.1 知识准备 181
7.2.2 任务实施 192
任务7.3 在线性表中实现排序算法 193
7.3.1 知识准备 194
7.3.2 任务实施 198
知识拓展:归并排序、基数排序 198
阅读材料:软件工程师的职业道德 199
单元小结 199
习题 199
单元8 查找 202
任务8.1 线性表查找 202
8.1.1 知识准备 202
8.1.2 任务实施 211
任务8.2 哈希表查找 212
8.2.1 知识准备 212
8.3.2 任务实施 220
知识拓展:平衡二叉树、B树 221
阅读材料:程序员的工匠精神 221
单元小结 222
习题 222
参考文献 224