什么是抽象数据类型(ADT)?

时间:2013-05-16 07:15:57

标签: data-structures

我遇到了以下“抽象数据类型”的定义,我无法理解。有人可以解释一下,最好是一个例子吗?

  

抽象数据类型被定义为构成数据类型的数据对象的数学模型以及对这些对象进行操作的函数

1 个答案:

答案 0 :(得分:5)

在某种语言中,无关紧要,我可以给你以下内容:

Stack make_stack();
void push(Stack stack, value);
value pop(Stack stack);

然后我可以说,假设您想将三个值推入堆栈然后弹出一个。它可能看起来像这样:

Stack my_stack = make_stack();
push(my_stack, 14);             /* stack now contains: 14 */
push(my_stack, "foo");          /* stack now contains: 14 foo */
push(my_stack, 999);            /* stack now contains: 14 foo 999 */
x = pop(my_stack);              /* x = 999, stack contains 14 foo */

这是一个抽象数据类型:我已经定义了一个新类型,一个堆栈,并且我已经为它提供了一个抽象接口。也就是说,我已经以Stack的形式向您提供构成数据类型的数据对象,我已经为您提供了函数make_stackpushpop对其进行操作。

堆栈可以通过列表,数组,堆或其他东西完全实现,并且没有外部可见的方式来知道什么。您所知道的是,您使用了一个特定的API,并且该API可以保证您获得类似堆栈的行为。该堆栈是一种抽象数据类型。