在尝试回答What is the difference between a composite data type and a data structure?时,我意识到虽然我清楚知道数据类型是是什么,以及它与数据结构的不同之处,我无法将差异化为文字。如果您正在教授入门CS课程,您将如何解释其中的差异?
答案 0 :(得分:36)
数据结构是组织数据的一种方式的抽象描述,以允许有效地执行对其的某些操作。例如,二叉树是数据结构,Fibonacci堆,AVL树或跳转列表也是如此。理论家描述数据结构并证明其属性,以表明在某些假设下可以有效地解决某些算法或问题。
数据类型是一个(可能是无限的)具体对象类,它们共享一些属性。例如,“integer”是包含所有无限多个整数的数据类型,“string”是包含所有无限多个字符串的数据类型,“32位整数”是包含所有可在30个字符表示的整数的数据类型 - 两位不要求数据类型是语言中的原语 - 例如,在C ++中,类型int
是原语,就像这样:
struct MyStruct {
int x, y;
};
在这种情况下,MyStruct
是一种数据类型,表示标记为MyStruct
的所有可能对象,其中有两个int
标记为x
和y
。
可以使用表示数据结构的所有可能实例的数据类型。例如,您可以使用以下数据类型对二进制搜索树进行编码:
struct BST {
int data;
BST* left, *right;
};
简而言之,数据结构是一个数学对象,具有一些属性集,可以通过许多不同的方式实现为数据类型。数据类型只是一类可以具体构造和表示的值。
答案 1 :(得分:10)
数据类型不能再减少,而数据结构可以,因为它包含多个不同数据的字段。
然而,最有可能的是,我会使用类比 - 数据类型是原子,而数据结构是分子。 (是的,我知道,原子可以分裂等,但这个类比应该为此目的而坚持。)
答案 2 :(得分:3)
数据类型是任何类型,包括类似int的基类型,但也扩展到结构。结构总是由基础类型和/或其他结构组成。
因此int是一种数据类型,但不是一种结构。结构点{int x; int y; }既是结构又是数据类型。