接口与实现
如何根据同一接口规范,定制ADT和实现implementation一个数据结构?
如何通过更有效的算法,使得对外接口更高效的工作?
- search
sort
Abstract Data Type vs. Data Structure
抽象数据类型 = 数据模型 + 定义在该模型上的一组操作
数据结构 = 基于某种特定语言,实现ADT的一套算法
向量ADT
数组到向量
数组是连续的内存空间,均匀划分成若干个单元,而每一个单元都与[0, n)的编号一一对应
A[i] = A + i * s, s为单个元素所占空间量, 故亦称作线性数组(linear array)
向量是数组的抽象和泛化, 由一组元素按照线性次序封装而成
与[0, n)内的秩(rank)一一对应 // 循秩访问(call-by-rank)
元素类型不限于基本类型
操作,管理维护更加简化安全。
可更为简便的参与更复杂的数据结构的定制。
操作实例
Vector模板类
typedef int Rank; // 秩 |
应用和实现相互分离;
实现对内部数据项的封装。
构造和析构
template <typename T> class Vector { // 向量模板类 |