抽象数据类型(Abstract Data Type, ADT)

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。ADT 通过将数据的逻辑结构与其在计算机内部的物理存储分离,实现了数据抽象与信息隐藏。

核心概念

ADT 的定义仅取决于它的逻辑特性,与其在计算机内部的表示和实现无关。一个 ADT 通常包含三部分:

  • 数据对象:数据元素的集合
  • 数据关系:数据元素之间的逻辑结构
  • 基本操作:定义在该数据结构上的一组运算

数据抽象与封装

ADT 的核心思想是将数据的表示和操作的具体实现封装起来,对外只暴露接口。使用者只需要关注”做什么”(即操作的功能),而不需要关注”怎么做”(即实现细节)。这种分离机制使得:

  • 程序的维护性和可读性提高
  • 实现的变更不会影响使用该 ADT 的代码
  • 模块化程度更高,便于团队协作和代码复用

表示形式

在数据结构的学习中,ADT 常用以下形式描述:

ADT 抽象数据类型名 {
    数据对象: D = { ... }
    数据关系: R = { ... }
    基本操作:
        操作名1(参数表)
            初始条件: ...
            操作结果: ...
        操作名2(参数表)
            ...
} ADT 抽象数据类型名

例如,栈的 ADT 定义包含 InitStackPushPopStackEmpty 等操作,它们只描述功能语义,而不规定底层是用数组还是链表实现。

与具体数据结构的区别

抽象数据类型是逻辑层面的概念,而具体的数据结构(如顺序栈、链栈)是 ADT 在计算机中的实现。同一个 ADT 可以有多种不同的实现方式,只要满足接口规范即可。

链接到