本书主要介绍数据结构的核心理论与实践应用方法,全书共设6章,系统讲解线性表、排序与查找算法、树结构、图结构、数据结构优化及工程实践等核心内容,并在此基础上对常见经典算法进行讲解,以便读者更好地掌握基础数据结构知识。
更多科学出版社服务,请扫码获取。
1999.09–2003.07 重庆大学 计算机科学与技术专业 工学学士(同时获管理学学士学位)
2003.09–2006.07 云南大学 计算机应用技术专业 工学硕士
2008.09–2011.07 云南大学 系统分析与集成专业 理学博士2006.07–2008.08 云南省玉溪市气象局 助理工程师
2007.05–2008.04 中国气象局 助理工程师
2018.08–2021.12 电子科技大学/云南电网有限责任公司
2009.09–至今 云南大学软件学院 讲师/副教授近五年以第一作者或通讯作者发表SCI科研论文20余篇。申请发明专利30余项,授权软件著作权10余项。
目录
第1章 线性结构基础与规范化实现 1
1.1 线性表的存储结构与基本操作 1
1.1.1 顺序存储线性表的实现 1
1.1.2 链式存储线性表的实现 3
1.2 单链表实验 5
1.2.1 单链表的插入 6
1.2.2 单链表查找 8
1.2.3 单链表查找及交换 9
1.2.4 单链表查找及删除 11
1.2.5 单链表逆置 12
1.3 栈的存储结构与基本操作 13
1.3.1 顺序存储栈的实现 14
1.3.2 链式存储栈的实现 16
1.4 栈的典型应用实验 18
1.4.1 进制转换 19
1.4.2 括号匹配 20
1.4.3 判断回文字符串 22
1.4.4 算术表达式求值 24
1.5 队列的存储结构与基本操作 25
1.5.1 顺序存储队列的实现 26
1.5.2 链式存储队列的实现 27
1.6 链队列实验 30
1.6.1 链队列基本操作 30
1.6.2 链队列实现医院排队系统 31
1.6.3 链队列实现约瑟夫环问题 32
第2章 线性结构的典型应用 35
2.1 表达式求值与栈应用 35
2.1.1 栈的应用:计算中缀表达式 35
2.1.2 栈的应用:计算后缀表达式 37
2.2 字符串匹配基础与进阶 38
2.2.1 朴素字符串匹配的实现 39
2.2.2 KMP字符串匹配的实现 41
2.3 查找技术基础 43
2.3.1 折半查找的实现 43
2.3.2 散列查找的实现 45
第3章 排序与查找综合训练 48
3.1 排序算法基础实现 48
3.1.1 直接插入排序的实现 49
3.1.2 快速排序的实现 50
3.2 排序算法实验 52
3.2.1 有序整数序列插入 53
3.2.2 直接插入排序 55
3.2.3 比较相邻两个元素求最大值 56
3.2.4 冒泡排序 58
3.2.5 查找最小值并交换 60
3.2.6 简单选择排序 61
3.2.7 单链表的冒泡排序操作 63
3.2.8 单链表的选择排序操作 65
第4章 树结构 68
4.1 二叉树的构造与可视化 68
4.1.1 由双遍历序列构造二叉树 69
4.1.2 打印二叉树 71
4.2 二叉树的创建与遍历实验 73
4.2.1 二叉树的创建 74
4.2.2 二叉树的先序遍历及中序遍历 76
4.2.3 访问二叉树叶子结点 77
4.2.4 层次遍历二叉树 79
4.3 二叉树的典型操作实验 81
4.3.1 求二叉树的高度 82
4.3.2 交换二叉树 84
4.3.3 复制二叉树 86
第5章 图结构 89
5.1 图的存储结构与基本指标实验 89
5.1.1 图的邻接矩阵存储实现 90
5.1.2 求邻接矩阵存储表示的图的顶点的度 92
5.1.3 图的邻接表存储实现 94
5.1.4 求邻接表存储表示的图的顶点的度 97
5.2 图的遍历实验 98
5.2.1 邻接矩阵存储图的深度优先遍历 99
5.2.2 邻接表存储图的深度优先遍历 102
5.2.3 邻接矩阵存储图的广度优先遍历 103
5.2.4 邻接表存储图的广度优先遍历 106
5.3 图的遍历算法实现 108
5.3.1 图的宽度优先遍历实现 109
5.3.2 图的深度优先遍历实现 112
第6章 典型算法范式 117
6.1 分治法 117
6.1.1 分治法介绍 118
6.1.2 归并排序 121
6.1.3 快速排序 124
6.1.4 中值问题 126
6.2 贪心法 128
6.2.1 经典贪心算法 129
6.2.2 最小生成树 131
6.2.3 Huffman编码 136
6.2.4 单源点最短路径 138
6.3 回溯法 142
6.3.1 回溯法-n皇后问题 143
6.3.2 子集和数 146
6.4 动态规划 149
6.4.1 数塔问题 150
6.4.2 最长公共子序列 153
6.4.3 求序列-2,11,-4,13,-5,-2的最大子段和 155
6.4.4 求最长的单调递增子序列长度 157
6.4.5 矩阵连乘问题 159
6.5 分支限界法 161
6.6 其他典型算法 164
6.6.1 DFS与BFS 165
6.6.2 求第k小元素 167
6.6.3 约瑟夫斯问题 170
6.6.4 开散列与闭散列 172
主要参考文献 177