一、逻辑结构类型
- 集合:数据元素间仅同属一个集合,无其他关系。
- 线性结构:1:1关系,开始和终端节点都是唯一的,除了开始节点和终端节点以外,其余节点都有且仅有一个前驱节点,有且仅有一个后继节点。
- 树形结构:1:n关系,开始节点唯一,终端节点不唯一。除终端节点以外,每个节点有一个或多个后续节点;除开始节点外,每个节点有且仅有一个前驱节点。
- 图形结构:n:n关系,没有开始节点和终端节点,所有节点都可能有多个前驱节点和多个后继节点。
二、存储结构类型
- 顺序存储:利用数组实现,空间利用率高。
- 链式存储:利用指针实现,便于增删调整修改。
- 索引存储:利用索引项实现,索引项包括关键字和地址,查找速度快,但是存储索引项会增加空间支出。
- 散列、哈希存储:利用哈希公式等计算并存储数值为地址,作为快速查找的依据,但是缺点是存储数值会占用大量空间,并且仅保存数据数值,不保存数据的逻辑关系。
三、抽象数据类型
抽象数据类型,即Abstract Data Type,简写为ADT。
它指的是用户进行软件系统设计时从问题的数学模型中抽象出来的逻辑数据结构和逻辑数据结构上的运算,而不考虑计算机的具体存储结构和运算的具体实现算法。
1.可以用(D,S,P)三元组表示,例如:
ADT Complex {
数据对象: D={e1,e2 | e1,e2均为实数}
数据关系: R={<e1,e2> | e1是复数的实数部分,e2 是复数的 虚数部分 }
基本操作: 运算功能描述,即函数接口。
} ADT Complex
2.抽象数据类型有两个重要的特征:
1)数据抽象:将数据抽象出数据特征,功能和接口 。
2)数据封装:将外部特性和内部实现细节分离,对外部用户隐藏细节。