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

Data structures 解释数据*结构*和数据*类型之间的区别*,data-structures,language-agnostic,theory,Data Structures,Language Agnostic,Theory,在试图回答问题时,我意识到,虽然我对数据类型有一个清晰的概念,以及它与数据结构的不同之处,但我无法用文字表达这种差异。如果您正在教授intro CS课程,您将如何解释差异?数据类型是任何类型,包括基本类型,如int,但也扩展到结构。结构始终由基本类型和/或其他结构组成 所以int是一种数据类型,但不是一种结构。而结构点{int x;int y;}既是结构又是数据类型。数据类型不能再缩减,而数据结构可以缩减,因为它由多个不同数据字段组成 然而,最有可能的是,我会用一个类比——数据类型是原子,而数据

在试图回答问题时,我意识到,虽然我对数据类型有一个清晰的概念,以及它与数据结构的不同之处,但我无法用文字表达这种差异。如果您正在教授intro CS课程,您将如何解释差异?

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


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

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

然而,最有可能的是,我会用一个类比——数据类型是原子,而数据结构是分子。(是的,我知道,原子可以分裂等等,但这个类比应该适用于这个目的)。

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

数据类型是一个(可能是无限的)具体对象类,所有这些对象都共享某些属性。例如,“整数”是包含所有无限多个整数的数据类型,“字符串”是包含所有无限多个字符串的数据类型,“32位整数”是包含所有可在32位中表示的整数的数据类型。在语言中没有数据类型是原始的要求——例如,在C++中,类型<代码> int >代码>是一个原始的,就像这一个:

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

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

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

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

数据结构还有一个比C语言构造结构更常见的含义——请参见下面templatetypedef的答案。它也可以是一个基本上是一个带有方法的结构的类。那又怎样?数据结构是一组被视为一个实体(事物)的数据。例如,int是一个简单变量,不能视为数据结构,但数组是一个数据结构(数组是一个组合变量)。数据类型是一组数据及其操作。两者之间的主要区别在于,第一种情况中不包括这些操作。抽象数据类型是数据结构及其操作的数学模型。换句话说,ADT是DS实现的接口。主席先生,我不明白抽象数据类型和数据类型之间的区别是什么?@SurajJain an ADT是对数据结构的抽象,只是抽象地引用数据。它描述数据结构的接口和行为,但不描述数据布局。数据类型不如数据结构抽象。特定语言中数据结构的具体实现产生该语言中的数据类型。
抽象数据类型
是一种没有实现的数据类型,它将实现的选择留给程序员,与
接口
同义。有关Python实现的详细信息,请参阅。太棒了!!!谢谢Atom是一个类比,因为虽然它在技术上可以拆分,但数据类型也可以拆分。字符串可以拆分为字符。整数可以拆分为位。不管怎样,数据类型(如原子)表示特定域中的基本单元。