2013-05-16 63 views
1

我遇到了以下“抽象数据类型”的定义,这是我无法理解的。有人能解释一下,最好用一个例子吗?什么是抽象数据类型(ADT)?

的抽象数据类型被定义为在这些对象上

+1

http://en.wikipedia.org/wiki/Abstract_data_type –

回答

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_stack,pushpop来对它进行操作。

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

+0

谢谢里昂,您的宝贵答复。多一个怀疑抽象数据类型是一种从基本数据类型(int,float,char)派生的用户定义数据类型? –

+0

我不确定你在问什么。抽象数据类型可以由语言或用户提供。它不能是一个纯粹的本地类型,因为它暴露了实现,但它可以包装一个。 –