我就读的大学考试中经常出现的两个问题是:
定义数据类型。分类并解释数据类型
定义数据结构。分类并解释数据结构
无论如何,它们不是同一件事吗?
考虑一下您正在制作一个Tree<E>
在爪哇。你会宣布你的班级Tree<E>
,向它添加方法以及你会做的地方Tree<String> myTree = new Tree<>();
制作一个树对象。
您的数据“结构”现在是数据“类型”。
如果有人问你一个问题,请说:变量 myTree 是什么类型?答案是,Tree<E>
。您的数据“结构”现在是数据“类型”。
现在,由于它们是相同的,因此将根据您想要对它们进行分类的基础以相同的方式对它们进行分类。原始或非原始。同质或异质。线性或分层。
这是我的理解。难道理解错了?
我想更正以下内容以开始 - 您创建了一个class称为“树”和一个object称为“myTree”,而不是variable名为“myTree”的datatype“树”。这些是不同的事情。
以下是数据类型的定义:
数据类型或简称类型是标识各种数据类型之一的分类,
例如实值、整数或布尔值,确定该类型的可能值;
可以对该类型的值执行的操作;数据的含义;
以及该类型的值的存储方式。
Now, 根据维基百科,数据类型中的“类型”有多种定义。
你问的问题是个好问题。当今的现代语言中有一些数据类型,称为抽象数据类型或简称 ADT。 ADT的定义是:
抽象数据类型(ADT)是具有相似行为的某一类数据结构的数学模型;或者对于具有相似语义的一种或多种编程语言的某些数据类型。抽象数据类型是间接定义的,仅由可以对其执行的操作以及对这些操作的影响(以及可能的成本)的数学约束来定义。
书中还写道:
抽象数据类型是纯粹的理论实体,用于(除其他外)简化抽象算法的描述,对数据结构进行分类和评估,以及正式描述编程语言的类型系统。然而,ADT可以通过特定的数据类型或数据结构以多种方式和多种编程语言来实现;或以正式规范语言描述。
这意味着 ADT 可以使用数据类型或数据结构来实现。
As for 数据结构:
数据结构是在计算机中存储和组织数据以便有效使用数据的特殊方式。
许多教科书交替使用这些词。对于更复杂的类型,这可能会导致混乱。
举一个小例子:使用 b 树来实现数据库是一种标准。这意味着,我们知道这种类型的 ADT 非常适合此类问题,并且可以更有效地处理它。但为了在 ADT 中注入这种有效性,您需要创建一个数据结构来提供所需的输出。
另一个例子:有很多树,如b树、二叉搜索树、AA树等。所有这些本质上都是树的类型,但每棵树都有自己的数据结构。
Refer: 数据结构列表获取大量可用结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)