3.3.2栈抽象数据类型59
3.3.3用Python实现栈60
3.3.4匹配括号62
3.3.5普通情况:匹配符号64
3.3.6将十进制数转换成二进制数65
3.3.7前序、中序和后序表达式67
3.4队列75
3.4.1何谓队列75
3.4.2队列抽象数据类型75
3.4.3用Python实现队列76
3.4.4模拟:传土豆77
3.4.5模拟:打印任务79
3.5双端队列84
3.5.1何谓双端队列84
3.5.2双端队列抽象数据类型84
3.5.3用Python实现双端队列85
3.5.4回文检测器86
3.6列表88
3.6.1无序列表抽象数据类型88
3.6.2实现无序列表:链表89
3.6.3有序列表抽象数据类型97
3.6.4实现有序列表97
3.7小结100
3.8关键术语101
3.9讨论题101
3.10编程练习102
第4章递归105
4.1本章目标105
4.2何谓递归105
4.2.1计算一列数之和105
4.2.2递归三原则107
4.2.3将整数转换成任意进制的字符串108
4.3栈帧:实现递归110
4.4递归可视化111
4.5复杂的递归问题116
4.6探索迷宫118
4.7动态规划123
4.8小结128
4.9关键术语129
4.10讨论题129
4.11编程练习129
第5章搜索和排序131
5.1本章目标131
5.2搜索131
5.2.1顺序搜索131
5.2.2二分搜索134
5.2.3散列136
5.3排序145
5.3.1冒泡排序145
5.3.2选择排序147
5.3.3插入排序149
5.3.4希尔排序151
5.3.5归并排序153
5.3.6快速排序156
5.4小结159
5.5关键术语160
5.6讨论题160
5.7编程练习161
第6章树163
6.1本章目标163
6.2示例163
6.3术语及定义166
6.4实现168
6.4.1列表之列表168
6.4.2节点与引用171
6.5二叉树的应用173
6.5.1解析树173
6.5.2树的遍历179
6.6利用二叉堆实现优先级队列182
6.6.1二叉堆的操作182
6.6.2二叉堆的实现183
6.7二叉搜索树189
6.7.1搜索树的操作190
6.7.2搜索树的实现190
6.7.3搜索树的分析201
6.8平衡二叉搜索树202
6.8.1AVL树的性能203
6.8.2AVL树的实现204
6.8.3映射实现总结210
6.9小结211
6.10关键术语211
6.11讨论题211
6.12编程练习213
第7章图及其算法214
7.1本章目标214
7.2术语及定义215
7.3图的抽象数据类型216
7.3.1邻接矩阵216
7.3.2邻接表217
7.3.3实现218
7.4宽度优先搜索220
7.4.1词梯问题220
7.4.2构建词梯图221
7.4.3实现宽度优先搜索223
7.4.4分析宽度优先搜索226
7.5深度优先搜索226
7.5.1骑士周游问题226
7.5.2构建骑士周游图227
7.5.3实现骑士周游229
7.5.4分析骑士周游231
7.5.5通用深度优先搜索233
7.5.6分析深度优先搜索236
7.6拓扑排序236
7.7强连通单元238
7.8最短路径问题241
7.8.1Dijkstra算法243
7.8.2分析Dijkstra算法245
7.8.3Prim算法245
7.9小结248
7.10关键术语249
7.11讨论题249
7.12编程练习250
第8章附加内容251
8.1本章目标251
8.2复习Python列表251
8.3复习递归256
8.3.1同余定理257
8.3.2幂剩余257
8.3.3最大公因数与逆元258
8.3.4RSA算法261
8.4复习字典:跳表264
8.4.1映射抽象数据类型265
8.4.2用Python实现字典265
8.5复习树:量化图片274
8.5.1数字图像概述274
8.5.2量化图片275
8.5.3使用八叉树改进量化算法277
8.6复习图:模式匹配284
8.6.1生物学字符串285
8.6.2简单比较285
8.6.3使用图:DFA287
8.6.4使用图:KMP288
8.7小结291
8.8关键术语291
8.9讨论题291
8.10编程练习292
附录APython图形包293
附录BPython资源294
参考资料295