第Ⅰ部分 问题求解方法 1
第1章 程序设计与软件工程基本原理 1
1.1问题求解与软件工程 1
1.2完成一个模块设计 10
1.3程序设计关键问题小结 17
第2章 递归:镜子 36
2.1递归解决方案 36
2.2事件计数 52
2.3检索数组 58
2.4组织数据 65
2.5递归和效率 71
第3章 数据抽象:墙 80
3.1抽象数据类型 80
3.2规定ADT 84
3.3实现ADT 95
第4章 链表 117
4.1预备知识 117
4.2链表程序设计 127
4.3链表的变体 150
4.4应用:维护库存清单 155
4.5 C++标准模板库 159
5.1 回溯 172
第5章 求解问题的递归方法 172
5.2定义语言 175
5.3递归与数学归纳的关系 186
第Ⅱ部分 用抽象数据类型求解问题 197
第6章 栈 197
6.1抽象数据类型——栈 197
6.2栈ADT的简单应用 202
6.3栈ADT的实现 205
6.4应用:代数表达式 215
6.5应用:检索问题 219
6.6栈和递归之间的关系 228
7.1 队列 238
第7章 队列 238
7.2队列的简单应用 240
7.3队列的实现 241
7.4面向位置的ADT小结 255
7.5应用:仿真 256
第8章 C++高级专题 270
8.1继承的再讨论 270
8.2虚函数与迟绑定 278
8.3友元 286
8.4表和有序表的再讨论 288
8.5类模板 293
8.6重载运算符 298
8.7迭代器 302
第9章 算法效率与排序 312
9.1算法效率的度量 312
9.2排序算法及其效率 321
第10章 树 349
10.1术语 350
10.2ADT二叉树 355
10.3二叉搜索树 375
10.4通用树 402
第11章 查找表与优先级队列 412
11.1查找表 412
11.2优先级队列:查找表的一种变体 427
第12章 查找表的高级实现 448
12.1平衡搜索树 448
12.2散列法 476
12.3多重组织的数据 493
第13章 图 501
13.1术语 501
13.2图ADT 504
13.3遍历图 507
13.4图的应用 511
第14章 外部方法 531
14.1外部存储器简介 531
14.2对外部文件中的数据排序 533
14.3外部查找表 539
附录A C++重要概念回顾 560
A.1语言基础 560
A.2使用iostream的输入输出操作 568
A.3函数 571
A.4选择语句 575
A.5循环语句 576
A.6数组 579
A.7字符串 584
A.8结构 588
A.9 C++异常 590
A.10文件的输入输出 595
A.11库 605
A.12与JAVA的比较 607
附录B ASCIIA码表 616
附录C C++头文件和标准函数 617
附录D 数学归纳 621
附录E 标准模板库类 625
附录F C++语句总结 627
附录G C++关键字 628
附录H C++运算符 629
词汇表 632
自测习题答案 650