注册 登录 进入教材巡展
#
  • #

出版时间:2026-06-10

出版社:机械工业出版社

以下为《数据结构与算法(Python版)第2版》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 机械工业出版社
  • 9787111809944
  • 2-1
  • 2026-06-10
  • 463
内容简介
本书主要内容包括数据结构与算法、异常处理与调试、线性表、栈和队列、串、树和二叉树的理论及应用、图论、图的应用、查找、排序,以及SciPy、Pandas、NetworkX等工具。
本书内容精练、由浅入深,注重学习的连续性和渐进性,适合作为高等院校计算机类专业教材或教学参考书,也可以供从事计算机应用开发的各类技术人员使用和参考,还可作为全国计算机等级考试、软件专业技术资格(水平)考试的培训资料。
目录
前言
第1章 数据结构与算法.1
1.1 程序 .1
1.1.1 定义 . 1
1.1.2 开发流程 . 1
1.2 数据结构 .2
1.2.1 组成 . 2
1.2.2 核心地位 . 2
1.3 算法 .3
1.3.1 算法引入 . 3
1.3.2 5 个属性 5
1.3.3 3 个层次 5
1.4 算法复杂性 .6
1.4.1 空间复杂度 . 6
1.4.2 时间复杂度 . 6
1.4.3 算法效率 . 7
1.5 算法表示方式 .8
1.5.1 流程图 . 8
1.5.2 N-S 图 . 9
1.5.3 伪语言 . 10
1.6 Python 编辑器 10
1.6.1 IDLE 10
1.6.2 PyCharm .11
1.6.3 Anaconda. 12
1.6.4 Jupyter Notebook 15
1.7 习题 .17
第2 章 异常处理与调试18
2.1 错误类型 .18
2.1.1 语法错误 . 18
2.1.2 语义错误 . 18
2.1.3 系统错误 . 19
2.2 异常处理的作用 .19
2.2.1 增强程序的健壮性 . 19
2.2.2 提供友好信息 . 19
2.2.3 便于调试程序 . 19
2.2.4 利于资源管理 . 19
2.3 try-except 语句 20
2.3.1 捕获单个异常 . 20
2.3.2 捕获多个异常 . 21
2.4 其他异常处理语言 .21
2.4.1 try-except-else 语句 21
2.4.2 try-except-finally 语句 22
2.5 raise 与assert 语句 .23
2.5.1 raise 语句 23
2.5.2 assert 语句 . 24
2.6 调试策略 .25
2.6.1 试探法 . 25
2.6.2 回溯法 . 25
2.6.3 归纳法 . 26
2.7 调试方法 .26
2.7.1 print 函数 26
2.7.2 pdb . 26
2.7.3 ipdb 28
2.7.4 Spyder 调试 30
2.7.5 PyCharm 调试 . 30
2.8 代码书写规则 .31
2.8.1 缩进 . 31
2.8.2 物理行与逻辑行 . 32
2.8.3 注释 . 32
2.8.4 编码习惯 . 33
2.9 习题 .33
第3 章 线性表35
3.1 相关概念 .35
3.2 顺序存储 .35
3.2.1 定义 . 35
3.2.2 操作实现 . 35
3.2.3 举例说明 . 37
3.3 链式存储 .38
3.3.1 单链表 . 38
3.3.2 双链表 . 41
3.4 实例 .43
3.4.1 一元多项式的加法 . 43
3.4.2 舞蹈链 .46
3.4.3 最大子序列和 .48
3.4.4 链表合并 .49
3.4.5 求单链表的倒数第k 个节点 .51
3.5 线性表与 AI 的关系 52
3.5.1 线性表在 AI 中的应用 .52
3.5.2 AI 对线性表的影响52
3.6 习题 53
第4 章 栈和队列.54
4.1 栈 54
4.1.1 概念 .54
4.1.2 操作 .55
4.2 队列 56
4.2.1 概念 .56
4.2.2 操作 .57
4.3 deque 双端队列 .58
4.3.1 简介 .58
4.3.2 相关方法 .58
4.4 斐波那契数列 61
4.5 回文数 63
4.6 逆波兰表达式 64
4.7 年龄问题 65
4.8 恺撒密码 66
4.9 各类素数 67
4.9.1 素数 .67
4.9.2 可逆素数 .70
4.9.3 孪生素数 .71
4.9.4 回文素数 .71
4.9.5 素数环 .72
4.10 汉诺塔 73
4.11 栈和队列与 AI 的关系 75
4.11.1 栈和队列在AI 中的应用 .75
4.11.2 AI 对栈和队列的影响 75
4.12 习题 76
第5 章 串.77
5.1 概述 77
5.1.1 术语 .77
5.1.2 基本操作 .77
5.1.3 举例说明 .78
5.1.4 应用场景 .79
5.2 正则表达式与re 模块 .80
5.2.1 正则表达式的基本语法 .80
5.2.2 re 模块的常用方法 .81
5.3 模式匹配 83
5.3.1 BF 算法 .84
5.3.2 KMP 算法 .85
5.4 词法分析 87
5.5 字串统计 88
5.6 文本处理与编辑 89
5.7 Anagrams 问题 89
5.8 串与 AI 的关系 90
5.8.1 串在 AI 中的应用 .90
5.8.2 AI 对串的影响91
5.9 习题 91
第6 章 树和二叉树.92
6.1 概述 92
6.1.1 树 .92
6.1.2 二叉树 .93
6.1.3 二叉树的性质 .93
6.1.4 应用场景 .95
6.2 二叉树存储 95
6.2.1 顺序存储 .95
6.2.2 链式存储 .95
6.3 二叉树遍历 96
6.3.1 分类 .96
6.3.2 遍历方法 .96
6.4 先序遍历 97
6.4.1 递归实现先序遍历 .97
6.4.2 非递归实现先序遍历 .98
6.5 中序遍历 98
6.5.1 递归实现中序遍历 .99
6.5.2 非递归实现中序遍历 .99
6.6 后序遍历 100
6.6.1 递归实现后序遍历 .100
6.6.2 非递归实现后序遍历 .100
6.7 层序遍历 102
6.8 根据遍历序列创建二叉树 103
6.8.1 由先序和中序遍历序列推出后序遍历序列 .103
6.8.2 由中序和后序遍历序列推出先序遍历序列 .103
6.8.3 由先序和后序遍历序列推出中序遍历序列 .104
6.9 二叉树创建 104
6.9.1 递归创建法 .104
6.9.2 非递归创建法 .105
6.10 习题 106
第7 章 树和二叉树的应用.108
7.1 哈夫曼树 108
7.1.1 哈夫曼编码 .108
7.1.2 哈夫曼算法 .108
7.2 树的存储 113
7.2.1 双亲表示法 .113
7.2.2 孩子表示法 .113
7.2.3 树的二叉链表表示法 .113
7.3 树与二叉树转换 114
7.3.1 树转换为二叉树的实际应用场合 .114
7.3.2 二叉树转换为树的实际应用场合 .114
7.4 树转化为二叉树 115
7.4.1 理论及实现 .115
7.4.2 图示过程 .115
7.4.3 代码实现 .116
7.5 二叉树转换为树 117
7.5.1 理论及实现 .117
7.5.2 图示过程 .118
7.5.3 代码实现 .118
7.6 实例 120
7.6.1 二叉树深度 .120
7.6.2 二叉树左右视图 .121
7.6.3 二叉树左右交换 .124
7.6.4 括号组合 .125
7.6.5 对称二叉树 .125
7.7 二叉树与 AI 的关系 126
7.7.1 二叉树在AI 中的应用.126
7.7.2 AI 对二叉树的影响127
7.8 习题 127
第8 章 图论.128
8.1 概述 128
8.1.1 基本概念 .128
8.1.2 基本性质 .129
8.1.3 图的类型 .129
8.2 邻接矩阵 130
8.2.1 定义 .130
8.2.2 代码实现 .131
8.2.3 优点和缺点 .134
8.3 邻接表 135
8.3.1 定义 .135
8.3.2 代码实现 .135
8.3.3 优点和缺点 .137
8.4 深度优先遍历 138
8.4.1 定义 .138
8.4.2 代码实现 .139
8.5 广度优先遍历 140
8.5.1 定义 .140
8.5.2 代码实现 .141
8.6 Graph Editor .142
8.6.1 简介 .142
8.6.2 操作方式 .142
8.6.3 绘图步骤 .143
8.7 WebGraphviz 143
8.7.1 简介 .143
8.7.2 主要特点 .143
8.7.3 主要功能 .143
8.7.4 操作方式 .144
8.8 习题 144
第9 章 图的应用.146
9.1 最小生成树 146
9.1.1 定义 .146
9.1.2 应用场景 .146
9.1.3 常见算法 .146
9.2 克鲁斯卡尔算法 147
9.2.1 定义 .147
9.2.2 图示过程 .147
9.2.3 代码实现 .147
9.3 普里姆算法 149
9.3.1 定义 .149
9.3.2 图示过程 .150
9.3.3 代码实现 .150
9.3.4 用heapq 实现普里姆算法 .152
9.4 最短路径 153
9.4.1 应用场景 .153
9.4.2 常见算法 .153
9.5 Dijkstra 算法 154
9.5.1 定义 .154
9.5.2 图示过程 .155
9.5.3 代码实现 .156
9.6 Bellman-Ford 算法 158
9.6.1 定义 .158
9.6.2 图示过程 .158
9.6.3 代码实现 .160
9.7 Floyd-Warshall 算法 161
9.7.1 定义 .161
9.7.2 图示过程 .161
9.7.3 代码实现 .163
9.8 实例 164
9.8.1 旅游路线 .164
9.8.2 单词搜索 .165
9.9 图论与 AI 的关系 166
9.9.1 图论在AI 中的应用.166
9.9.2 AI 对图论的影响166
9.10 习题 167
第10 章 查找.168
10.1 概述 168
10.1.1 定义 .168
10.1.2 分类 .168
10.2 基于线性表查找 168
10.2.1 顺序查找 .168
10.2.2 二分查找 .170
10.2.3 分块查找 .171
10.3 二叉查找树 173
10.3.1 特性 .173
10.3.2 操作 .175
10.4 平衡二叉树 179
10.4.1 平衡因子 .179
10.4.2 优势 .180
10.4.3 图示过程 .181
10.4.4 代码实现 .183
10.5 哈希表 185
10.5.1 简介 .185
10.5.2 应用场景 .185
10.5.3 哈希算法 .186
10.5.4 解决冲突的方法 .187
10.6 实例 190
10.6.1 最大值或最小值 .190
10.6.2 二分查找的递归实现 .191
10.6.3 出现次数最多的整数 .191
10.7 查找与AI 的关系192
10.7.1 查找在AI 中的应用.192
10.7.2 AI 对查找的挑战192
10.8 习题 192
第11 章 排序 .194
11.1 概述 194
11.1.1 定义 .194
11.1.2 排序函数 .195
11.2 直接插入排序 196
11.2.1 简介 .196
11.2.2 代码实现 .197
11.3 折半插入排序 198
11.3.1 简介 .198
11.3.2 代码实现 .198
11.4 希尔排序 199
11.4.1 简介 .199
11.4.2 代码实现 .199
11.5 冒泡排序 200
11.5.1 简介 .200
11.5.2 代码实现 .201
11.6 快速排序 202
11.6.1 简介 .202
11.6.2 代码实现 .202
11.7 简单选择排序 204
11.7.1 简介 .204
11.7.2 代码实现 .204
11.8 堆排序 206
11.8.1 简介 .206
11.8.2 建成小顶堆 .207
11.8.3 重新建堆 .207
11.8.4 代码实现 .208
11.9 归并排序 212
11.9.1 简介 .212
11.9.2 代码实现 .212
11.10 排序方法总结 213
11.10.1 时间性能 .213
11.10.2 空间性能 .213
11.10.3 稳定性能 .214
11.10.4 选择排序方法的准则 .214
11.11 实例 215
11.11.1 有序序列插入元素 .215
11.11.2 求解第二大整数 .216
11.11.3 输出最小的k 个数 .216
11.12 排序和AI 的关系 217
11.12.1 排序在AI 中的应用 .217
11.12.2 AI 对排序的挑战 218
11.13 习题 218
第12 章  SciPy 220
12.1 认识SciPy .220
12.1.1 简介 .220
12.1.2 邻接矩阵 .221
12.2 图的遍历 222
12.2.1 depth_first_order() .222
12.2.2 breadth_first_order() 222
12.3 最短路径 223
12.3.1 Dijkstra 算法实现 .223
12.3.2 Floyd-Warshall 算法实现 .224
12.4 最小生成树 225
12.5 图的连通分量 226
12.5.1 无向图的连通分量 .226
12.5.2 有向图的连通分量 .227
12.6 实例 228
12.6.1 城市交通规划 .228
12.6.2 电路网络分析 .229
12.6.3 社交网络分析 .229
12.7 SciPy 在图论中的应用 .230
第13 章 Pandas 231
13.1 认识Pandas .231
13.2 Series 232
13.2.1 创建Series 232
13.2.2 Series 属性 233
13.2.3 操作Series 234
13.3 DataFrame 236
13.3.1 创建DataFrame 236
13.3.2 DataFrame 属性 238
13.3.3 操作DataFrame 238
13.4 Index .242
13.4.1 创建Index .242
13.4.2 属性与方法 .243
13.4.3 reindex .245
13.5 图论应用 247
13.5.1 邻接矩阵 .247
13.5.2 边列表 .248
13.6 节点度数 248
13.6.1 有向图 .248
13.6.2 加权图 .249
13.7 图的遍历 250
13.7.1 深度优先搜索 .250
13.7.2 广度优先搜索 .251
第14 章 NetworkX .252
14.1 概述 252
14.1.1 功能 .252
14.1.2 特点 .253
14.1.3 应用场景 .253
14.1.4 安装 .254
14.1.5 图操作 .254
14.2 各类图 255
14.2.1 无向图 .255
14.2.2 有向图 .255
14.2.3 多重图 .255
14.3 节点 256
14.3.1 节点的属性 .256
14.3.2 节点的操作 .258
14.4 边 259
14.4.1 边的属性 .259
14.4.2 边的操作 .260
14.5 深度优先搜索 263
14.5.1 无向图 .263
14.5.2 有向图 .265
14.6 广度优先搜索 265
14.6.1 无向图 .265
14.6.2 有向图 .266
14.7 图的连通性 266
14.7.1 判断连通性 .266
14.7.2 计算连通分量 .267
14.8 最短路径 268
14.8.1 无权图 .269
14.8.2 加权图 .269
14.9 实例 270
14.9.1 恋情关系分析 .270
14.9.2 网页链接关系模拟 .271
14.9.3 交通网络分析 .271
14.9.4 生物网络分析 .272
附录.274
附录A 全国计算机等级考试(NCRE)二级Python 语言程序设计考试大纲(2025 年版) .274
A.1 基本要求 .274
A.2 考试内容 .274
A.3 考试方式 .276
附录B 软件竞赛 .276
B.1 蓝桥杯 .276
B.2 C4 天梯赛 .277
B.3 国际大学生程序设计竞赛 .278
B.4 计算机软件能力认证 .282
B.5 百度之星程序设计大赛 .282
附录C 软件算法学习网站 .283
参考文献.289