重点:
1. 深入理解支持泛型和迭代的背包、队列和栈非常重要,原因有三:
· 我们将以这些数据类型为基石构造本书中的其他更高级的数据结构;
· 他们展示了数据结构和算法的关系以及同时满足多个有可能相互冲突的性能目标时所要面对的挑战;
· 我们将要学习的若干算法的实现重点就是需要其中的抽象数据类型能够支持对对象集合的强大操作,这些实现正是我们的起点。
2. 我们现在拥有两种表示对象集合的方式,即数组和链表。Java内置了数组,链表也很容易使用Java的标准方式实现。两者都非常基础,常常被称为顺序储存和链式储存。
在本书后面部分,我们会在各种抽象数据类型的实现中将多种方式结归并扩展这些基本的数据结构:
其中一种重要的扩展就是各种含有多个链接的数据结构,例如二叉树;
另一个重要的扩展是复合型的数据结构:我们可以使用背包储存栈,用队列储存数组等等,例如图,我们可以用数组的背包表示它。
用这种方式很容易定义任意复杂的数据结构,而我们重点研究抽象数据类型的一个重要原因就是试图控制这种复杂度。
3. 在研究一个新的应用领域时,我们将会按照以下步骤识别目标并使用数据抽象解决问题:
· 定义API;
· 根据特定的应用场景开发用例代码;
· 描述一种数据结构(一组值的表示),并在API所对应的抽象数据类型的实现中根据它定义类的实例变量;
· 描述算法(实现一组操作的方式),并根据它实现类中的实例方法;
· 分析算法的性能特点。
时间: 2024-10-12 23:53:41