2. 第 2 章 抽象数据类型
1. 算法与数据结构应该以巧妙的方式结合起来,达到解决问题的目的,并提高效率。 2. 数据的静态组织和动态的操作算法,构成了ADT。一旦选择了某种数据结构,ADT的性能也可以确定。由此得知,抽象数据类型的挑选本质上是确定其数据结构。 3. 用数组存放数据,会出现空间超出不够用或浪费用不完的情况(即使是动态分配的数组,也会出现这种情况)。 vector 则很好的解决了这个问题(它是一个动态分配的数组,但是提供了很好的动态化策略)。 4. 如果数据在数组中有序存储,那么增删都会比较麻烦。(vector 在内存中也是连续存储的)。为了应对数据动态变化,必须要打破连续存储的物理形态,于是链表应运而生( list 容器)。 5. 二叉查找树结合查找和链接,使得增删元素可以高效的实现。需要注意,平衡性是二叉查找树的重要指标,一旦失去平衡,查找效率就会急剧下降,可以限定结点的平衡程度来提升查找性能。 6. 在观察不同数据结构实现的同时,应该发现数据结构不仅给出静止的逻辑结构,更应该发现它给出了从一个状态到另一个状态的迁移规则。 7. 从不同的数据结构中进行选择,标准是通过分析完成任务的总时间来确定使用何种抽象数据类型。 8. STL是一套由模板写成的标准库,给出了多种常用的容器。容器可以说是抽象数据类型,它能容纳任何类型的对象,并在内部按照一定的数据结构将对象组织起来。 9.