【问题标题】:Explain the difference between a data *structure* and a data *type* [closed]解释数据*结构*和数据*类型*之间的区别[关闭]
【发布时间】:2011-06-05 13:08:51
【问题描述】:

在尝试回答 What is the difference between a composite data type and a data structure? 时,我意识到虽然我清楚地知道什么是数据类型,以及它与数据结构的不同之处 em>,我无法用语言表达差异。如果您正在教授 CS 入门课程,您将如何解释其中的差异?

【问题讨论】:

  • 一个数据结构是被视为一个实体(事物)的一组数据。例如一个int是一个简单的变量,不能被认为是一个数据结构,但是一个数组是一个数据结构(一个数组是一个组合变量)。 数据类型是一组数据和对它们的操作。两者的主要区别在于第一种情况不包括操作。 抽象数据类型是数据结构及其操作的数学模型。换句话说,ADT 是 DS 实现的接口。

标签: data-structures language-agnostic theory


【解决方案1】:

数据结构 是对一种组织数据的方式的抽象描述,以允许对其进行有效执行某些操作。例如,二叉树是一种数据结构,斐波那契堆、AVL 树或跳过列表也是如此。理论家描述数据结构并证明其性质是为了证明某些算法或问题可以在某些假设下有效地解决。

数据type 是一个(可能是无限的)具体对象类,它们都共享一些属性。例如,“整数”是包含所有无限多个整数的数据类型,“字符串”是包含所有无限多个字符串的数据类型,而“32 位整数”是包含可以用 30 表示的所有整数的数据类型-两位。不要求数据类型是语言中的基元 - 例如,在 C++ 中,int 类型是基元,就像这个:

struct MyStruct {
    int x, y;
};

在这种情况下,MyStruct 是一种数据类型,表示标记为MyStruct 的所有可能对象,其中有两个int,分别标记为xy

可以有一个数据类型来表示一个数据结构的所有可能的实例。例如,您可以使用这种数据类型对二叉搜索树进行编码:

struct BST {
    int data;
    BST* left, *right;
};

简而言之,数据结构是一个数学对象,具有一些属性,可以通过多种不同方式实现为数据类型。数据类型 只是一类可以具体构造和表示的值。

【讨论】:

  • 先生,我不明白抽象数据类型和数据类型有什么区别?
  • @SurajJain ADT 是数据结构的抽象,它仅抽象地引用数据。它描述了数据结构的接口和行为,但不描述数据布局。与数据结构相比,数据类型更少抽象。特定语言的数据结构的具体实现会产生该语言的数据类型。
  • abstract data type 是一种没有 _implementation_的数据类型,它将实现的选择留给程序员,与interface 同义。有关 Python 实现,请参阅 this
【解决方案2】:

数据类型不能再减少,而数据结构可以,因为它由不同数据的多个字段组成。

但是,我很可能会使用一个类比 - 数据类型是原子,而数据结构是分子。 (是的,我知道,原子可以被分裂等,但这个类比应该成立)。

【讨论】:

  • 太棒了!!!谢谢!!!
  • Atom 就像一个类比,因为虽然它在技术上可以被拆分,但数据类型也可以。字符串可以拆分为字符。整数可以拆分为位。无论如何,数据类型(如原子)代表特定域中的基本单位。
【解决方案3】:

数据类型是任何类型,包括基本类型,如 int,但也可以扩展到结构。结构总是由基本类型和/或其他结构组成。

所以 int 是一种数据类型,但不是结构。而 struct point { int x;整数y; } 既是结构又是数据类型。

【讨论】:

  • 与 C 语言构造 struct 相比,数据结构还有另一个更常见的含义——请参阅下面的 templatetypedef 答案。
  • 它也可以是一个类,它基本上是一个带有方法的结构。那又怎样?
猜你喜欢
  • 1970-01-01
  • 2013-01-03
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 2010-10-28
  • 2014-09-06
相关资源
最近更新 更多