ADT或混凝土

时间:2014-05-30 10:34:19

标签: algorithm data-structures

有人可以澄清抽象数据类型(ADT)与具体数据结构之间的确切区别。在我阅读本书(Anany Levitin,设计和分析算法)时,它指出ADT是一个数据结构加上一组操作。然而,令我困惑的是,Arrays和Linked Lists也有一些特定的操作(例如添加元素,删除元素),它们被视为具体的数据类型。由于这种混淆,我不能为我自己决定一个新的数据结构(例如堆,树,二叉搜索树)是抽象的还是具体的。

2 个答案:

答案 0 :(得分:1)

ADT是对数据结构的描述,它不包含任何代码的描述 - 将其视为一个规范,当您要求程序员为您编写数据结构时,可以将其作为规范。

Stack的ADT可能如下所示:

void push(int)
int pop()

相应的具体数据结构将包含使这些功能起作用所需的实际代码:

void push(int x){
    // implementation code here
}
int pop(){
    // implementation code here
}

答案 1 :(得分:0)

数据结构,抽象数据类型和数据类型之间的关系与算法,伪代码和程序之间的关系相同。第一个是想法,第二个是描述,第三个是实现。