本书提供了学习经典数据结构和算法的新方法。通过带有完整工作代码的详细示例清晰、透彻地解释了全书内容。掷骰子、纸牌和棋惫游戏提供了大量新颖、迷人的示例。
本书首先透彻介绍了面向对象程序设计。利用这些工具,读者可以深入探究线性数据结构、算法(包括渐近表示法和递归)、树、集合和高级主题,如图和内存管理。
本书分为5个部分:面向对象程序设计、线性结构、算法、树和集合,以及高级主题。
第I部分介绍面向对象程序设计,用3章分别介绍3个重要的原则:封装、多态性和继承。各所学校对本书这一部分的使用有极大的差异。如果某所学校在第一门计算机课程中就讲授了对象,则可以非常快地介绍这一部分,或者完全跳过不讲(尽管绝大多数学生都会通过复习这部分内容而获益)。另外一些学校的第一门计算机课程是用c或其他某种语言讲授的,那么这可能就要在这部分内容上花更多的时间。另外,本书的这一部分(以及附录A)适合于介绍面向对象程序设计的短期课程。
第II部分介绍栈、队列和表,并为它们提供了基于数组的实现和链表实现。读者将会学到如何使用这些结构以及如何构建它们,然后将会学到在Java集合框架中的什么位置找到它们。
在第III部分,读者将开始从单纯的编程步入计算机科学的旅程。这一部分将会介绍算法分析,包括渐近表示法和分析简单算法的逐步过程。在学完这些困难的内容之后,读者将会学习介绍最简单的查找和排序算法的相对较短的一章,这时可以轻松一下。到介绍递归时,读者已经理解了调用栈、排序问题,并且能够感知到递归算法(如归并排序和快速排序)提供的更好性能。
第IV部分重点关注数据结构,介绍了树和集合实现(有序表、二叉树和散列表)。
第V部分介绍高级主题,教师可从中自由选择他们感兴趣的主题,包括高级线性结构、串、高级树、图、内存管理,以及磁盘存储涉及的问题。