第1章 软件工程基本原理和Java类
1.1 软件的生命周期
1.2 软件开发阶段
1.3 算法分析:大O表示法
1.4 用户定义的类
1.5 抽象数据类型
1.6 编程示例:糖果机
1.7 标识类、对象和操作
1.8 快速总结
1.9 练习题
1.10 编程练习
第2章 继承和异常处理
2.1 继承
2.2 抽象方法和抽象类
2.3 聚合
2.4 异常处理
2.5 编程示例:成绩报告单
2.6 快速总结
2.7 练习题
2.8 编程练习
第3章 基于数组的表
3.1 表元素的类型
3.2 类ArrayListClass
3.3 无序表
3.4 类Vector
3.5 编程示例:多项式的运算
3.6 快速回顾
3.7 练习题
3.8 编程练习
第4章 链表
4.1 链表
4.2 链表元素的插入和删除
4.3 构建链表
4.4 ADT链表
4.5 无序链表
4.6 有序链表
4.7 双向链表
4.8 带有头节点和尾节点的链表
4.9 循环链表
4.10 编程示例:音像店
4.11 快速回顾
4.12 练习题
4.13 编程练习
第5章 递归
5.1 递归的定义
5.2 使用递归法解决问题
5.3 编程示例:将十进制数转换为二进制数
5.4 编程示例:Sierpinski gasket
5.5 使用递归还是迭代
5.6 递归和回溯:8-皇后问题
5.7 快速回顾
5.8 练习题
5.9 编程练习
第6章 堆栈
6.1 堆栈
6.2 StackException类
6.3 使用数组实现堆栈
6.4 编程示例:求*高GPA
6.5 把堆栈实现为链表
6.6 由类LinkedListClass派生而来的堆栈
6.7 堆栈的应用:后缀表达式计算器
6.8 后缀表达式计算器:图形用户界面(GUI)
6.9 消除递归:反向打印链表的非递归算法
6.10 类Stack
6.11 快速回顾
6.12 练习题
6.13 编程练习
第7章 队列
7.1 队列
7.2 队列的异常类
7.3 队列的数组实现
7.4 队列的链表实现
7.5 从类LinkedListClass派生而来的队列
7.6 优先队列
7.7 队列的应用:模拟
7.8 快速回顾
7.9 练习题
7.10 编程练习
第8章 搜索算法
8.1 搜索算法
8.2 基于比较的搜索算法的下限
8.3 散列算法
8.4 快速回顾
8.5 练习题
8.6 编程练习
第9章 排序算法
9.1 排序算法
9.2 选择排序: 基于数组的表
9.3 插入排序: 基于数组的表
9.4 插入排序: 基于链表的表
9.5 基于比较的排序算法的下限
9.6 快速排序:基于数组的表
9.7 归并排序: 基于链表的表
9.8 堆排序: 基于数组的表
9.9 再论优先级队列
9.10 编程示例:选举结果
9.11 快速回顾
9.12 练习题
9.13 编程练习
第10章 二叉树
10.1 二叉树
10.2 二叉树的遍历
10.3 二叉搜索树
10.4 二叉搜索树分析
10.5 二叉树的非递归遍历算法
10.6 AVL(平衡)树
10.7 编程示例:音像店
10.8 快速回顾
10.9 练习题
10.10 编程练习
第11章 图
11.1 图的简史
11.2 图的定义和符号
11.3 图的表示方法
11.4 图的操作
11.5 图的ADT定义
11.6 图的遍历
11.7 *短路径算法
11.8 *小生成树
11.9 拓扑排序
11.10 快速回顾
11.11 练习题
11.12 编程练习
附录A 保留字
附录B 运算符优先级
附录C 字符集
附录D 包和用户定义的类
附录E Java类
附录F 针对C++程序员的JAVA介绍
附录G 参考文献
附录H 部分习题答案