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

zwo*_*wol 30 language-agnostic theory data-structures

试图回答复合数据类型和数据结构之间的区别是什么?我意识到虽然我清楚地知道数据类型什么,以及它与数据结构的不同之处,但我无法将其区分为单词.如果您正在教授入门CS课程,您会如何解释其中的差异?

tem*_*def 38

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

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

struct MyStruct {
    int x, y;
};
Run Code Online (Sandbox Code Playgroud)

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

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

struct BST {
    int data;
    BST* left, *right;
};
Run Code Online (Sandbox Code Playgroud)

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

  • 先生,我不明白抽象数据类型和数据类型有什么区别? (2认同)

Fem*_*ref 11

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

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

  • Atom 可以作为一个类比,因为虽然它在技术上可以拆分,但数据类型也可以拆分。字符串可以拆分为字符。整数可以被分割成位。无论如何,数据类型(如原子)代表特定域内的基本单位。 (2认同)