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

Lit*_*ild 11 language-agnostic

在我学习的Uni考试中经常出现的两个问题是:

  • 定义数据类型.分类和解释数据类型
  • 定义数据结构.对数据结构进行分类和解释
  • 不知何故,他们不是一回事吗?
    考虑一下你是Tree<E>用Java编写的.你要声明你的类Tree<E>,为它添加方法以及你要做Tree<String> myTree = new Tree<>();的树对象.

    您的数据"结构"现在是数据"类型".
    假如你被问到一个问题:变量myTree是什么类型的?答案是,Tree<E>.您的数据"结构"现在是数据"类型".

    现在它们是相同的,它们将按照您想要对它们进行分类的基础以相同的方式进行分类.原始或非原始.同质或异构.线性或分层.

    这是我的理解.理解错了吗?

    use*_*071 10

    我想更正以下内容 - 你创建了一个名为"Tree" 的和一个名为"myTree" 的对象,而不是一个名为"myTree"的变量数据类型为 "Tree".这些是不同的东西.

    以下是数据类型的定义:

    数据类型或简单类型是标识各种类型数据之一的分类,例如实数值,整数或布尔值,其确定该类型的可能值; 可以对该类型的值进行的操作; 数据的含义; 以及可以存储该类型的值的方式.

    现在, 根据维基百科,数据类型中有"类型"的各种定义.

    你提出的问题很好.今天的现代语言中有数据类型,称为抽象数据类型或ADT.ADT的定义是:

    抽象数据类型(ADT)是具有相似行为的某类数据结构的数学模型; 或者对于具有类似语义的一种或多种编程语言的某些数据类型.抽象数据类型是间接定义的,只能通过可能对其执行的操作以及对这些操作的影响(以及可能的成本)的数学约束来定义.

    它还写道:

    抽象数据类型纯粹是理论实体,用于(除其他外)简化抽象算法的描述,分类和评估数据结构,以及正式描述编程语言的类型系统.然而,ADT可以通过特定数据类型或数据结构以许多方式和许多编程语言实现; 或以正式规范语言描述.

    这意味着可以使用数据类型或数据结构来实现ADT.

    至于数据结构:

    数据结构是在计算机中存储和组织数据的特定方式,以便可以有效地使用它.

    许多教科书互换使用这些词.对于更复杂的类型,可能会导致混淆.

    举一个小例子:使用b-tree实现数据库是一种标准.意思是,我们知道这种类型的ADT非常适合这种类型的问题,并且可以更有效地处理它.但是为了在ADT中注入这种有效性,您需要创建一个能够为您提供所需输出的数据结构.

    另一个例子:有很多树,如b-tree,二叉搜索树,AA树等.所有这些树基本上都是树的类型,但每个树都有自己的数据结构.

    请参阅:大量可用结构列表的数据结构列表.