本书以重庆市首批精品在线开放课程、2023 年重庆市高校课程思政示范课两项省级建设成果为支撑,以“问题驱动—案例贯穿—思维内化”为逻辑而编写。全书共8章,系统涵盖数据结构核心知识体系,内容包括绪论,线性表,栈和队列,串、数组和广义表,树和二叉树,图,查找和排序。每章以真实工业问题开篇,章末设置工业场景案例,涵盖智能制造、质量追溯、智慧物流等国家战略领域。全书融入课程思政元素,实现“纸质教材+数字资源+在线平台”一体化设计。全书采用类C语言作为数据结构和算法的描述语言,难度适中,突出实用性与应用性,符合最新研究生考试大纲。建议学时64~80学时(含实验),各章可根据专业需求灵活取舍。本书提供配套课件、完整教案、微课视频、课后习题参考答案,登录华信教育资源网可免费下载;全部综合案例及部分算法实现的完整程序代码,以及数据结构课程所需的C语言关键知识点汇总,均可通过扫描书中相应二维码获取;此外,本书还提供智慧课程、知识图谱、在线题库,读者可通过智慧树平台获取。
唐万梅,重庆师范大学三级教授,重庆市人工智能学会第一届理事会理事2013 -2017,中国运筹学会决策科学分会第四届理事会理事2013-2018,重庆市人工智能学会第二届理事会常务理事2019.12,重庆市研究生教育教学改革研究优秀成果奖,负责人2021.09,重庆师范大学教学成果奖,一等奖,负责人2022.05,重庆市教学成果奖,二等奖,排名第5
目 录
第1章 绪论 1
1.1 问题引入 1
1.2 数据结构的研究内容 2
1.3 数据结构的基本概念和术语 3
1.4 抽象数据类型的表示和实现 6
1.5 算法和算法分析 7
1.6 实践 11
1.7 工业软件中的数据组织 11
习题 12
第2章 线性表 14
2.1 问题引入 14
2.2 线性表的定义和特点 15
2.3 线性表的类型定义 15
2.4 线性表的顺序表示和实现 17
2.5 线性表的链式表示和实现 24
2.5.1 单链表 25
2.5.2 循环链表 32
2.5.3 双向链表 35
2.5.4 顺序表和链表的比较 38
2.6 线性表的应用 38
2.6.1 线性表的合并 38
2.6.2 有序表的合并 41
2.7 工业场景案例:传感器数据链式存储 43
习题 44
第3章 栈和队列 47
3.1 问题引入 47
3.2 栈的定义和特点 48
3.3 栈的表示和操作的实现 49
3.4 栈与递归 54
3.5 队列的定义和特点 60
3.6 队列的表示和操作的实现 61
3.7 案例分析与实现 68
3.8 工业场景案例:设备状态监控(基于队列与栈) 74
习题 75
第4章 串、数组和广义表 79
4.1 问题引入 79
4.2 串的定义 80
4.3 串的抽象数据类型定义 80
4.4 串的存储结构 81
4.5 串的模式匹配算法 82
4.6 数组的定义和存储 95
4.6.1 数组的定义 95
4.6.2 数组的存储 96
4.6.3 矩阵的压缩存储 97
4.7 广义表 101
4.7.1 广义表的抽象数据类型(逻辑结构) 101
4.7.2 广义表的存储结构 103
4.8 工业场景案例:工业设备智能检索与层次化管理系统 104
习题 106
第5章 树和二叉树 108
5.1 问题引入 108
5.2 树的结构定义和基本操作 109
5.3 二叉树 111
5.4 二叉树的性质和存储结构 112
5.4.1 二叉树的性质 112
5.4.2 二叉树的存储结构 115
5.5 遍历二叉树和线索二叉树 118
5.5.1 遍历二叉树 118
5.5.2 线索二叉树 123
5.6 树和森林 127
5.6.1 树的存储结构 127
5.6.2 树和森林与二叉树的转换 130
5.6.3 树和森林的遍历 132
5.7 哈夫曼树及其应用 133
5.8 工业场景案例:产品分类树与质量追溯 142
习题 143
第6章 图 147
6.1 问题引入 147
6.2 图的定义和基本术语 148
6.2.1 图的定义 148
6.2.2 图的类型定义 153
6.3 图的存储结构 154
6.3.1 数组存储(邻接矩阵) 154
6.3.2 邻接表 157
6.4 图的两种遍历方式 164
6.4.1 深度优先搜索遍历 164
6.4.2 图的广度优先搜索遍历 168
6.5 图的应用 172
6.5.1 最小生成树 172
6.5.2 最短路径 177
6.5.3 拓扑排序 188
6.5.4 关键路径 190
6.6 工业场景案例:智慧工厂AGV路径规划 199
习题 205
第7章 查找 208
7.1 问题引入 208
7.2 查找的基本概念 209
7.3 线性表的查找 210
7.3.1 顺序查找 210
7.3.2 折半查找 213
7.3.3 索引查找 218
7.4 树表的查找 220
7.4.1 二叉排序树 221
7.5 平衡二叉树 230
7.5.1 平衡二叉树的定义 230
7.5.2 平衡二叉树的平衡调整 232
7.5.3 B-树 238
7.5.4 B+树 240
7.6 散列表的查找 242
7.6.1 散列表的基本概念 242
7.6.2 构造散列函数的方法 243
7.6.3 冲突处理方法 245
7.6.4 散列表查找及其分析 249
7.7 工农业场景案例:产品质量追溯系统的快速查询 251
习题 252
第8章 排序 255
8.1 问题引入 255
8.2 基本概念和排序算法概述 256
8.2.1 排序的基本概念 256
8.2.2 排序算法的分类 257
8.2.3 待排序记录的存储方式 257
8.2.4 排序算法效率的评价指标 258
8.3 插入排序 259
8.3.1 直接插入排序 259
8.3.2 折半插入排序 261
8.3.3 希尔排序 262
8.4 交换排序 265
8.4.1 冒泡排序 265
8.4.2 快速排序 267
8.5 选择排序 272
8.5.1 简单选择排序 272
8.5.2 树形选择排序 275
8.5.3 堆排序 276
8.6 归并排序 281
8.7 基数排序 284
8.8 各种排序算法的综合比较 288
8.9 工业场景案例:订单数据排序与报表生成 288
习题 289