第1章 绪论 1
导学问题1:问题中的数据在计算机中如何组织? 1
导学问题2:程序的效率如何改进? 3
1.1 知识学习 4
1.1.1 数据结构课程的研究内容 4
1.1.2 数据的结构 5
1.1.3 算法与算法分析 8
1.2 知识应用 13
1.2.1 导学问题1-4、1-5和1-6的数据结构 13
1.2.2 导学问题2的时间复杂度 14
1.3 知识拓展 14
1.3.1 算法时间复杂度分析 14
1.3.2 算法执行时间测试 16
本章小结 18
思考与练习 18
应用实战 20
第2章 线性表 21
导学问题1:实现一个简易的学生信息管理系统 21
导学问题2:实现一个简易的商品信息管理系统 21
2.1 知识学习 22
2.1.1 线性表的概念 23
2.1.2 线性表的顺序存储及基本操作 23
2.1.3 线性表的链式存储及基本操作 30
2.2 知识应用 37
2.2.1 导学问题1的顺序表实现 37
2.2.2 导学问题1的单链表实现 42
2.3 知识拓展 47
2.3.1 顺序表的其他操作 48
2.3.2 单链表的其他操作 49
2.3.3 顺序表和链表的综合比较 53
本章小结 53
思考与练习 54
应用实战 56
第3章 操作受限的线性表:栈和队列 58
导学问题1:数制转换问题 58
导学问题2:银行排队问题 59
3.1 栈 59
3.1.1 知识学习 59
3.1.2 知识应用:导学问题1的实现 64
3.1.3 知识拓展:栈的其他应用 64
3.2 队列 70
3.2.1 知识学习 70
3.2.2 知识应用:导学问题2的实现 76
3.2.3 知识拓展:队列的其他应用 77
本章小结 79
思考与练习 79
应用实战 82
第4章 元素受限的线性表:串 83
导学问题:微信中的安全提醒 83
4.1 知识学习 84
4.1.1 串的基本概念 84
4.1.2 串的存储结构 84
4.1.3 串的操作算法 85
4.2 知识应用:导学问题的实现 88
4.3 知识拓展:KMP模式匹配算法 88
本章小结 92
思考与练习 93
应用实战 94
第5章 元素扩展的线性表:矩阵和广义表 96
导学问题1:个性化推荐系统中的用户评分表 96
导学问题2:本科生创新实践项目中的人员关系 97
5.1 矩阵 98
5.1.1 知识学习 98
5.1.2 知识应用:导学问题1的实现 103
5.1.3 知识拓展:稀疏矩阵的转置操作 103
5.2 广义表 106
5.2.1 知识学习 106
5.2.2 知识应用:导学问题2的实现 109
5.2.3 知识拓展:广义表的其他操作 111
本章小结 112
思考与练习 113
应用实战 114
第6章 树和二叉树 115
导学问题1:查找U盘中文件的存储路径 115
导学问题2:表达式树中的算术表达式求值 116
6.1 知识学习 116
6.1.1 树 116
6.1.2 二叉树 122
6.1.3 树、森林与二叉树的转换 129
6.2 知识应用 133
6.2.1 导学问题1的实现 133
6.2.2 导学问题2的实现 134
6.3 知识拓展 135
6.3.1 二叉树的其他操作 135
6.3.2 线索二叉树 140
6.3.3 Huffman树与Huffman编码 144
本章小结 151
思考与练习 151
应用实战 157
第7章 图 158
导学问题1:构造最小造价通信网 158
导学问题2:设计一个简单的旅游交通费用查询系统 159
7.1 知识学习 159
7.1.1 图的基本概念 159
7.1.2 图的存储结构 163
7.1.3 图的遍历 168
7.1.4 最小生成树 172
7.1.5 最短路径 178
7.2 知识应用 184
7.2.1 导学问题1的实现 184
7.2.2 导学问题2的实现 186
7.3 知识拓展 188
7.3.1 AOV网与拓扑排序 188
7.3.2 AOE网与关键路径 192
本章小结 195
思考与练习 195
应用实战 200
第8章 查找 202
导学问题:简单通讯录查询 202
8.1 知识学习 203
8.1.1 查找的基本概念 203
8.1.2 顺序表查找 204
8.1.3 树表查找 209
8.2 知识应用:导学问题的实现 223
8.3 知识拓展 229
8.3.1 大数据的查找算法选择 229
8.3.2 Hash表查找 229
本章小结 235
思考与练习 235
应用实战 238
第9章 排序 240
导学问题:网络购物中的商品排序 240
9.1 知识学习 241
9.1.1 排序的基本概念 241
9.1.2 交换类排序 242
9.1.3 插入类排序 246
9.1.4 选择类排序 249
9.1.5 归并排序 254
9.2 知识应用:导学问题的实现 258
9.3 知识拓展 262
9.3.1 冒泡排序的改进 262
9.3.2 分配类排序:基数排序 265
9.3.3 排序算法总结 267
本章小结 269
思考与练习 269
应用实战 272
附录 273
附录A 数据结构试题 273
数据结构期中试卷 273
数据结构期终试卷 274
附录B 数据结构课程设计题 276
附录C 实验报告、课程设计报告模板 277
附录D 学习资源 279
参考文献 280