在试图回答复合数据类型和数据结构的区别是什么?时,我意识到虽然我很清楚数据类型是什么,以及它与数据结构不同,但我无法用言语表达出这种差异。如果你正在教授入门级计算机科学课程,你会如何解释这个区别?
在试图回答复合数据类型和数据结构的区别是什么?时,我意识到虽然我很清楚数据类型是什么,以及它与数据结构不同,但我无法用言语表达出这种差异。如果你正在教授入门级计算机科学课程,你会如何解释这个区别?
数据结构是一种抽象的方式来组织数据,以便可以高效地执行某些操作。例如,二叉树、Fibonacci堆、AVL树或跳表都是数据结构。理论学家描述数据结构并证明其属性,以展示在特定假设下可以高效地解决某些算法或问题。
数据类型是一种(可能无限的)具有共同属性的具体对象类别。例如,“整数”是一个包含所有无限个整数的数据类型,“字符串”是一个包含所有无限个字符串的数据类型,“32位整数”是一个包含所有可用32位表示的整数的数据类型。不要求数据类型在语言中为原始类型 - 例如,在C ++中,类型int
是一个原始类型,而这个也是:
struct MyStruct {
int x, y;
};
在这种情况下,MyStruct
是一种数据类型,代表了所有可能的被标记为 MyStruct
的对象,它们都有两个标记为 x
和 y
的 int
。
可以使用一个数据类型表示数据结构的所有可能实例。例如,您可以使用此数据类型编码二叉搜索树:
struct BST {
int data;
BST* left, *right;
};
简而言之,数据结构是具有一些属性的数学对象,可以通过许多不同的方式实现为数据类型。 数据类型只是可以被具体构造和表示的值类。
数据类型无法再缩小,而数据结构可以,因为它由不同类型的多个字段组成。
然而,最好使用类比-数据类型就像原子,而数据结构则像分子。(是的,我知道原子可以被分裂等等,但这个类比目的上应该还是成立的)。
数据类型包括基本类型,如int,也包括结构体。结构体由基本类型和/或其他结构体组成。
因此,int是一种数据类型但不是结构体。而struct point { int x; int y; }既是结构体又是数据类型。