抽象和原始数据类型 (ADT)

Div*_*nsh 2 algorithm programming-languages abstract-data-type adt data-structures

我知道这个问题已被问了一百万次,但有人可以向我解释 ADT 究竟是什么意思(如果可能的话,用外行的话)?

我读了ADT 的这个定义- ADT 只提到要执行哪些操作,但没有提到这些操作将如何实现。原始数据类型也是如此。

假设我们有一个浮点数据类型,我们知道可以执行乘法、除法等操作(所以我们知道将执行哪些操作)但我们不知道它将如何执行(在乘法的情况下,我们可以只是相乘或重复相加,所以我们有两个过程给出相同的结果,因此它是抽象的)。所以这两种数据类型本质上是相同的。(我知道这是不正确的)。

我知道我弄错了。有人可以帮我清除这个概念吗?

rak*_*esh 6

数据类型是任何编程语言中的数据分类——例如整数、字符、浮点数等。

摘要 数据类型是一个理论概念。抽象数据类型 (ADT) 是数据类型的数学模型,其中从数据用户的角度来看,数据类型由其行为(语义)定义,特别是在可能的值、对数据的可能操作方面这种类型,以及这些操作的行为。一组独立于任何特定实现而精确指定的数据值和相关操作。抽象数据类型 (ADT) 是对数据集和可以对数据执行的操作集的规范。

例如:堆栈是一种抽象数据类型。堆栈 ADT 可以执行 push、pop、peek 操作。这三个操作定义了类型可以是什么,而与实现的语言无关。

所以我们可以说,原始数据类型是抽象数据类型的一种形式。只是它们是由语言制造商提供的,并且非常特定于语言。所以基本上有两种类型的数据类型原语和用户定义。但它们都是抽象数据类型。我希望这能说明问题。

  • 我不确定原始数据类型如何称为 ADT - 因为它们没有抽象。它们是纯粹的数据/数据容器。另一方面,非原始/用户定义的数据类型存储对数据内存位置的引用,并且主要涉及那些“数据容器”的设计和使用,例如整数堆栈、文本消息队列。抽象数据类型是非基元的子集,主要只是一个接口 - 仅定义行为,例如 java.util.List (2认同)