3

堆栈被称为抽象数据类型,它只不过是一个接口。那么为什么堆栈属于数据结构主题。这是数据结构还是抽象数据类型?两者是相同的还是不同的?

4

4 回答 4

5

来自维基百科:

Abstract data types是纯粹的理论实体,用于(除其他外)简化抽象算法的描述,对数据结构进行分类和评估

在计算机科学中,adata structure是一种在计算机中存储和组织数据的特殊方式,以便可以有效地使用它

一种描述方式stack是后进先出 (LIFO) 抽象数据类型和线性数据结构。堆栈可以将任何抽象数据类型作为元素,但其特征在于两个基本操作,称为推送和弹出(或拉取)。

因此,可以得出结论,抽象数据类型是理论上的,但在实现时称为数据结构。

为了更清楚:

一个数据类型可以被认为是抽象的,当它根据对它的操作来定义时,它的实现是隐藏的(因此我们总是可以出于效率原因将一个实现替换为另一个,这不会干扰程序)。

于 2012-12-28T11:32:06.623 回答
0

堆栈是一种抽象数据类型,也称为线性数据结构。它遵循后进先出(LIFO)策略。所以它是数据结构的一部分......

于 2012-12-28T11:32:19.517 回答
0

stack 和 queue 被称为抽象数据类型,因为在 stack 中主要有两个操作 push 和 pop,在 queue 中有插入和删除。当对任何数据集进行操作时,它与该集合必须包含的数据类型无关。例如,当我们从中缀(即 a+b)转换为后缀表达式(即 ab+)时,该集合可能包含括号或数字集或字符集或三者的组合。所以这就是为什么堆栈和队列被称为抽象数据类型。

于 2019-03-28T12:46:51.917 回答
0

抽象数据类型 (ADT) 是数据集的理论规范集以及可以对集中的数据执行的操作集。当数据类型独立于各种具体实现时,它被称为抽象数据类型。

假设 Integer 支持加法、乘法、除法运算。

这些操作不适用于字符串数据,因为它们不支持乘法。因此整数不是 ADT。

现在你明白了,

如果您对数据类型的操作不关心数据的类型,则称为抽象数据结构。例如堆栈、列表、队列……这里这些东西支持诸如 push()、pop()、add()、delete() 之类的操作关心我们推送、弹出、删除的内容。

在这里,根据实现的类型(列表、堆栈、队列),我们可以决定如何管理这些 ADT。

为什么 Stack 是抽象数据类型?

`Stack s = new Stack<>();
List l = new LinkedList<>();
s.push(45);
s.push("str");
//s.push("String");
if(s.peek().equals(45)){
    System.out.println("Treu");
}`

我认为不需要更多解释。

于 2017-07-15T14:42:08.023 回答