第1章 程序设计原理
1.1 简介
1.2 Life游戏
1.3 程序设计风格
1.4 编码、测试和进一步细化
1.5 程序维护
1.6 结论和复习
启示和易犯的错误
复习题
进阶参考书目
第2章 栈
2.1 栈说明
2.2 栈的实现
2.3 应用:桌面计算器
2.4 应用:括号的匹配
2.5 抽象数据类型及其实现
启示和易犯的错误
复习题
进阶参考书目
第3章 队列
3.1 定义
3.2 队列的实现
3.3 C++队列的循环实现
3.4 演示和测试
3.5 队列的应用:模拟
启示和易犯的错误
复习题
进阶参考书目
第4章 链栈和链式队列
4.1 指针和链式结构
4.2 链栈
4.3 带保护的链栈
4.4 链式队列
4.5 应用:多项式运算
4.6 抽象数据类型及其实现
启示和易犯的错误
复习题
第5章 递归
5.1 递归导言
5.2 递归的原理
5.3 回溯法:延缓工作
5.4 树结构的程序:在游戏中预测
启示和易犯的错误
复习题
进阶参考书目
第6章 表和字符串
6.1 表的定义
6.2 表的实现
6.3 字符串
6.4 应用:文本编辑器
6.5 数组链表
6.6 应用:生成排列
启示和易犯的错误
复习题
进阶参考书目
第7章 查找
7.1 查找:引言和符号
7.2 顺序查找
7.3 二分查找
7.4 比较树
7.5 下限
7.6 渐近
启示和易犯的错误
复习题
进阶参考书目
第8章 排序
8.1 引言和符号
8.2 插入排序
8.3 选择排序
8.4 希尔排序
8.5 下限
8.6 分而治之排序
8.7 链表的归并排序
8.8 顺序表的快速排序
8.9 堆和堆排序
8.10 复习:方法比较
启示和易犯的错误
复习题
进阶参考书目
第9章 表格和信息检索
9.1 引言:突破lg n的障碍
9.2 矩形表格
9.3 各种形态的表格
9.4 表格:一种新的抽象数据类型
9.5 应用:基数排序
9.6 哈希法
9.7 关于哈希的分析
9.8 结论:方法的比较
9.9 应用:再访Life游戏
启示和易犯的错误
复习题
进阶参考书目
第10章 二叉树
10.1 二叉树
10.2 二叉查找树
10.3 建立二叉查找树
10.4 高度平衡:AVL树
10.5 伸展树:自我调节的数据结构
启示和易犯的错误
复习题
进阶参考书目
第11章 多路树
11.1 果园.树和二叉树
11.2 词典查找树:trie
11.3 外部查找:B-树
11.4 红-黑树
启示和易犯的错误
复习题
进阶参考书目
第12章 图
12.1 数学背景
12.2 计算机表示
12.3 图的遍历
12.4 拓扑排序
12.5 贪心算法:最短路径
12.6 最小生成树
12.7 图作为数据结构
启示和易犯的错误
复习题
进阶参考书目
第13章 案例研究:波兰表示法
13.1 问题
13.2 思想
13.3 波兰表达式的求值,
13.4 从中缀式到波兰形式的转换
13.5 一个交互式的表达式求值程序
进阶参考书目
附录A 数学方法
A.1 整数幂的和
A.2 对数
A.3 排列.组合和阶乘
A.4 斐波纳契数
A.5 Catalan数
进阶参考书目
附录B 随机数
B.1 介绍
B.2 策略
B.3 程序设计
进阶参考书目
附录C 软件包和实用函数
C.1 软件包和C++转换单元
C.2 课文中的软件包
C.3 实用程序软件包
C.4 计时方法
附录D 程序设计规则.启示和易犯的错误
D.1 数据结构和算法的选择
D.2 递归
D.3 数据结构的设计
D.4 算法设计和分析
D.5 程序设计
D.6 用指针对象进行程序设计
D.7 调试和测试
D.8 维护
术语表