第Ⅰ部分 问题求解方法
第1章 程序设计与软件工程基本原理 1
1.1 问题求解与软件工程 1
1.2 完成模块化设计 10
1.3 程序设计关键问题小结 15
第2章 递归:镜子 32
2.1 递归解决方案 32
2.2 事件计数 49
2.3 数组检索 55
2.4 组织数据 62
2.5 递归和效率 67
第3章 数据抽象:墙 76
3.1 抽象数据类型 76
3.2 规定ADT 80
3.3 实现ADT 90
第4章 链表 109
4.1 预备知识 109
4.2 链表程序设计 118
4.3 链表的变种 137
4.4 应用实例:维护库存清单 143
第5章 问题求解的递归方法 153
5.1 回溯 153
5.2 定义语言 157
5.3 递归与数学归纳的关系 167
第Ⅱ部分 用抽象数据类型求解问题
第6章 栈 177
6.1 抽象数据类型 177
6.2 栈ADT的简单应用 181
6.3 栈ADT的实现 185
6.4 应用:代数表达式 191
6.5 应用:检索问题 195
6.6 栈和递归之间的关系 204
第7章 队列 212
7.1 队列 212
7.2 队列ADT的简单应用 213
7.3 队列的实现 215
7.4 面向位置的ADT综述 225
7.5 应用:仿真 226
第8章 类关系 238
8.1 继承回顾 238
8.2 动态绑定和抽象类 246
8.3 ADT表和有序表回顾 254
8.4 面向对象方法的好处 262
第9章 算法效率与排序 267
9.1 算法效率的度量 267
9.2 排序算法及其效率 276
第10章 树 303
10.1 术语 303
10.2 二叉树ADT 309
10.3 二叉查找树 326
10.4 通用树 348
第11章 表格与优先级队列 357
11.1 表格ADT 357
11.2 优先级队列:表格的一种变体 371
第12章 表格的高级实现 389
12.1 平衡查找树 389
12.2 散列法 416
12.3 多重组织的数据 431
第13章 图 439
13.1 术语 439
13.2 图ADT 442
13.3 图的遍历 445
13.4 图的应用 449
第14章 外部方法 468
14.1 外部存储器简介 468
14.2 外部文件中的数据排序 470
14.3 外部表格 476
自测题答案 497