有人可以澄清抽象数据类型(ADT)与具体数据结构之间的确切区别。在我阅读本书(Anany Levitin,设计和分析算法)时,它指出ADT是一个数据结构加上一组操作。然而,令我困惑的是,Arrays和Linked Lists也有一些特定的操作(例如添加元素,删除元素),它们被视为具体的数据类型。由于这种混淆,我不能为我自己决定一个新的数据结构(例如堆,树,二叉搜索树)是抽象的还是具体的。
答案 0 :(得分:1)
ADT是对数据结构的描述,它不包含任何代码的描述 - 将其视为一个规范,当您要求程序员为您编写数据结构时,可以将其作为规范。
Stack的ADT可能如下所示:
void push(int)
int pop()
相应的具体数据结构将包含使这些功能起作用所需的实际代码:
void push(int x){
// implementation code here
}
int pop(){
// implementation code here
}
答案 1 :(得分:0)
数据结构,抽象数据类型和数据类型之间的关系与算法,伪代码和程序之间的关系相同。第一个是想法,第二个是描述,第三个是实现。