第1章 概述 1
1.1 抽象数据类型 2
1.2 C++类和抽象数据类型 5
1.3 C++应用中的对象 6
1.4 对象设计 8
1.5 类继承的应用 16
1.6 面向对象程序设计 17
1.7 程序测试与维护 23
1.8 C++程序设计语言 24
1.9 抽象基类及多态性 25
书面作业 26
第2章 基本数据类型 29
2.1 整型 30
2.2 字符类型 33
2.3 实数类型 34
2.4 枚举类型 36
2.5 指针 37
2.6 数组类型 39
2.7 文本串及变量 43
2.8 记录 48
2.9 文件 49
2.10 数组和记录的应用 53
书面作业 60
上机题 66
第3章 抽象数据类型和类 69
3.1 用户类型类 70
3.2 类的举例 77
3.3 对象和信息传递 83
3.4 对象数组 84
3.5 多构造函数 85
3.6 应用举例:三角矩阵 88
书面作业 96
上机题 100
第4章 群体类 109
4.1 线性群体 111
4.2 非线性群体 116
4.3 算法分析 118
4.4 顺序查找与折半查找 122
4.5 基本的顺序表类 128
书面作业 136
上机题 140
第5章 栈和队列 143
5.1 栈 144
5.2 类Stack 146
5.3 表达式求值 153
5.4 队列 159
5.5 类Queue 161
5.6 优先级队列 171
5.7 实例研究:事件驱动模拟 179
书面作业 190
上机题 193
第6章 抽象操作 197
6.1 运算符重载 198
6.2 有理数 203
6.3 有理数类 204
6.4 作为成员函数的有理数运算 206
6.5 作为友元函数的有理数流运算符 207
6.6 有理数转换 209
6.7 有理数的使用 211
书机作业 215
上机题 222
第7章 形式数据类型 225
7.1 模板函数 226
7.2 模板类 229
7.3 表的模板类 231
7.4 中缀表达式求值 233
书面作业 240
上机题 241
第8章 类和动态存储 245
8.1 指针与动态数据结构 247
8.2 动态申请对象 248
8.3 赋值与初始化 252
8.4 安全数组 257
8.5 串类 263
8.6 模式匹配 273
8.7 整型集合 278
书面作业 288
上机题 297
第9章 链表 301
9.1 结点类 304
9.2 构造链表 308
9.3 设计链表类 321
9.4 类LinkedList 324
9.5 LinkedList类的实现 331
9.6 用链表实现集合 337
9.7 实例研究:打印缓冲池 343
9.8 循环表 349
9.9 双向链表 354
9.10 实例研究:窗口管理 360
书面作业 367
上机题 374
第10章 递归 379
10.1 递归的概念 380
10.2 设计递归函数 386
10.3 递归代码和运行时堆栈 390
10.4 用递归进行间题求解 392
10.5 递归评估 410
书面作业 414
上机题 417
第11章 树 421
11.1 二叉树结构 426
11.2 设计TreeNode函数 430
11.3 树扫描算法的使用 434
11.4 二叉搜索树 445
11.5 二叉搜索树的使用 451
11.6 BinSTree的实现 455
11.7 实例研究:索引(Concordance) 464
书面作业 469
上机题 475
第12章 继承和抽象类 477
12.1 继承概述 478
12.2 C++中的继承 480
12.3 多态性和虚函数 487
12.4 抽象基类 495
12.5 迭代算子 498
12.6 有序表 511
12.7 异构表 514
书面作业 521
上机题 530
第13章 高级非线性结构 533
13.1 基于数组的二叉树 534
13.2 堆 541
13.3 Heap类的实现 546
13.4 优先级队列 554
13.5 AVL树 560
13.6 AVL树类 564
13.7 树迭代算子 574
13.8 图 579
13.9 Graph类 581
书面作业 599
上机题 606
第14章 群体数据的组织 611
14.1 数组排序的基本算法 612
14.2 快速排序(QuickSort) 617
14.3 哈希法(Hashing) 627
14.4 哈希表类 632
14.5 搜索方法的性能 640
14.6 二进制文件和外部数据操作 641
14.7 辞典 661
书面作业 668
上机题 673
附录 部分书面作业答案 679