解释数据*结构*和数据*类型之间的区别*

时间:2011-01-07 21:17:20

标签: data-structures language-agnostic theory

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

3 个答案:

答案 0 :(得分:36)

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

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

struct MyStruct {
    int x, y;
};

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

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

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

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

答案 1 :(得分:10)

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

然而,最有可能的是,我会使用类比 - 数据类型是原子,而数据结构是分子。 (是的,我知道,原子可以分裂等,但这个类比应该为此目的而坚持。)

答案 2 :(得分:3)

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

因此int是一种数据类型,但不是一种结构。结构点{int x; int y; }既是结构又是数据类型。