抽象数据类型(Abstract Data Type, ADT)是指一个数学模型以及定义在该模型上的一组操作的总称。ADT 只描述"做什么",不描述"怎么做",实现了数据抽象与封装。
ADT 把"数据的逻辑特性"和"数据的存储与实现"分离开来,使得数据结构的设计与实现解耦——这正是数据结构课程的理论基础。
ADT 的形式化定义为三元组 $ADT = (D, S, P)$:
例如,栈的 ADT 定义:数据对象是元素集合,数据关系是线性关系(栈顶→栈底),操作包括 InitStack、Push、Pop、GetTop 等。
ADT 体现了封装的思想:使用者只需知道接口(操作的输入输出),不需了解内部实现。这与面向对象编程中的"类"概念类似,但 ADT 是数学概念、独立于语言。
| 特征 | 说明 |
|---|---|
| 抽象性 | 只定义逻辑特性,不涉及具体存储实现 |
| 封装性 | 数据和操作封装在一起,外部只能通过接口访问 |
| 独立性 | ADT 独立于具体的程序设计语言 |
| 可复用性 | 同一 ADT 可用不同存储结构和语言实现 |
| 信息隐藏 | 内部实现细节对外部不可见 |
| 考法 | 解题套路 |
|---|---|
| ADT 的三元组表示 | 识别 D(数据对象)、S(关系)、P(操作)分别是什么 |
| ADT 与数据结构的区别 | ADT 是抽象规范,数据结构是具体实现;$ADT =$ 逻辑结构 + 操作集 |
| 给定数据结构写出 ADT | 列出数据对象、关系、基本操作三部分 |
| 判断关于 ADT 的说法正误 | ADT 独立于语言、独立于存储结构,但依赖逻辑结构 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。