所有数据结构都有抽象数据类型吗?

Es-Loop:

我在一些地方正在阅读与此主题相关的东西,例如在这里

堆是抽象数据类型吗?如果是这样,那么优先队列呢?

答案是:

优先级队列和堆都是数据类型(更准确;抽象数据类型或ADT

但在这里

堆是否被视为抽象数据类型?

堆不是ADT。它是一个数据结构。

例如,在书中:

Java软件结构,国际版[John Lewis,Joseph Chase]

它具有作为ADT的堆和具有以下代码的DS:

public interface HeapADT<T> extends BinaryTreeADT<T>
{
/**
* Adds the specified object to this heap.
*
* @param obj the element to be added to this heap
*/
public void addElement (T obj);
/**
* Removes element with the lowest value from this heap.
*
* @return the element with the lowest value from this heap
*/
public T removeMin();
/**
* Returns a reference to the element with the lowest value in
* this heap.
*
* @return a reference to the element with the lowest value in this heap
*/
public T findMin();
}

主要问题是,例如,我们是否说DS的所有行为定义都是ADT,

  • 列表是静态和动态数组的ADT,链接列表
  • Stack是ADT,但是您可以使用数组或链表实现堆栈,但最终该堆栈是数据结构
  • 队列,与堆栈相同
  • ,与堆栈相同

因此,抽象数据类型是您将使用具有自己的ADT的另一个数据结构实现的行为。

这样对吗?

谢谢

Federico klez Culloca:

正如您所说的,抽象数据类型描述了实体的行为(或“语义”)(通常从使用该实体的人的角度来看)。因此,在您的示例中,堆栈,队列,列表等...

数据结构只是组织数据的一种特殊方式。因此,这只是表示数据类型的一种方式。

主要问题是,如果我们说DS的所有行为定义都是ADT

我不会那样说。如果我定义一个表示经典示例的Car数据结构(同样,将数据结构视为组织数据的一种方式),则该数据结构的行为不一定表示ADT。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是堆和优先级队列,数据结构或抽象数据类型?

抽象数据类型构造函数可以被不小心绕过吗?

int,char还是抽象数据类型吗?

java.util.ArrayList是数据结构/集合/或抽象数据类型的实现?

抽象数据类型和代数数据类型有什么区别

类型类定义中的抽象数据类型

您可以混合使用抽象数据类型吗?例如地图的优先队列?

抽象数据类型与非抽象数据类型(在Java中)

如何创建抽象数据类型的模板类?

数据结构,数据类型和抽象数据类型之间的区别

Npgsql忘记了所有数据类型

MongoDB枚举密钥的所有数据类型

是否有用于在ansi C中制作抽象数据类型的标准方法?

以抽象数据类型打印Matrix的函数

“数据结构”和“数据类型”之间有区别吗?

队列抽象数据类型-浮动元素

Haskell中有哪些抽象数据类型?它们与代数数据类型有何不同?

Rust中的C抽象数据类型

堆是否被视为抽象数据类型?

C99:是否可以在没有动态分配的情况下设计抽象数据类型?

具有数据类型的函数

具有数字类型的协变数据结构

过程编程中的抽象数据类型实现

Set 作为抽象数据类型和作为接口有什么区别?

我们可以将所有数据类型合二为一吗?

OCaml 中抽象数据类型中的匹配元素

从抽象数据类型转换为泛型类型

什么具体数据类型在Java中实现了抽象数据类型结构?

抽象数据类型和逻辑数据结构有什么区别?