是Tree,数据结构还是抽象数据类型?

时间:2015-02-19 12:04:13

标签: data-structures tree abstract-data-type

我听到很多人将树称为数据结构。但树大多是使用链接列表或数组实现的。那么它是否为抽象数据类型?

给定一种结构,我们如何确定它是数据结构还是抽象数据类型?

2 个答案:

答案 0 :(得分:2)

如果您在谈论通用树而未指定其实现或使用的任何基础数据结构,则本身是抽象数据类型(ADT)。 ADT是任何数据类型,并未指定其实施。

但是一旦你开始讨论使用Linked List或Arrays进行特定实现的具体树,那么这种具体的树就是数据结构

通过上述方法,以下内容可帮助您清除与您的问题相关的其他混淆。如果我错了,请纠正我!

数据类型

来自维基百科的数据类型的定义:

  

数据类型或简单类型是标识各种类型数据之一的分类。

数据类型只是数据的分类。它没有关于如何实现这些数据的任何规范。恕我直言,数据类型只是一个理论概念。

例如,任何实数都可以是 real 的数据类型。但与整数一起,它们都可以归类为数字数据类型,例如 number

正如我刚才所指出的,ADT是一种数据类型。但是 string int 是否可以视为ADT?

答案是肯定和否定。

是的,因为编程语言可以有很多方法来实现 string int ;但是在一种情况下,通过所有编程语言,这些数据类型必须共享一致的属性。

不,因为这些原始数据类型不像堆栈或队列那样抽象。由于这些数据类型很少在每种编程语言中共享一致的属性,因此它们的用户必须知道算术溢出等基本问题。两种语言都可能具有 int 数据类型,但其中一种范围可达无穷大,另一个高达2 ^ 32。这种技术细节必须知道并不是ADT所承诺的。让我们来看看堆栈。在每种编程语言中,堆栈都可以使用pop,push等一致的过程来保证。没有其他关于实施级别的详细信息,您应该了解它们,您只需使用它们,无论您喜欢哪种语言。

数据结构

让我们看一下Wiki中数据结构的定义:

  

数据结构是在计算机中组织数据的一种特殊方式,因此可以有效地使用它。

如您所见,数据结构完全与实现有关。它不是概念性的,而是具体的。在我看来,程序中的每一段数据都可以被视为数据结构。 字符串可以。 int 可以。而像LinkedList_Stack或Array_Stack这样的其他东西都是数据结构。

有些人可能会说为什么 int 是一个数据结构?它是来自编程语言作者视图的较低级别的数据结构。因为编程语言可以有很多方法在计算机中存储 int 数据类型。最常见的解决方案是两个补码,其他替代方案是偏移二进制和一个'但是,从用户的角度来看,我们将 int 视为编程语言开箱即用的原始数据类型,我们并不关心它的实现。它只是一种编程语言的构建块。因此对于我们的用户来说,由编程语言的这些构建块(原始数据类型)构造的任何数据更像是数据结构。而对于编程语言的作者来说,构建块是一些较低级别的机器代码,因此对于它们来说, int 绝对是一种数据结构。

简单地说,一件事是否是数据结构实际上取决于我们如何看待它。

答案 1 :(得分:0)

通过谷歌:

  

在计算机科学中,抽象数据类型(ADT)是一种数学   某类具有相似数据结构的模型   行为

很清楚,两者都是。