好吧,不知何故,即使在阅读了很多教科书(真的很多)和在互联网上阅读了很长一段时间后,我仍然无法完全理解所提到的两个事物之间的区别是什么。
为了简化问题,根据维基百科,数据类型是:
识别各种类型数据之一的分类,例如实数、整数或布尔值,确定该类型的可能值;可以对该类型的值执行的操作;数据的含义;以及该类型的值的存储方式。
它主要是一些抽象数据类型的实现比如实数或整数。
一切都好,接下来是数据结构:
是在计算机中组织数据以便有效使用数据的一种特殊方式。[1][2]数据结构可以实现一种或多种特定的抽象数据类型,这是指定操作契约及其复杂性的手段。相比下,数据结构是ADT提供的合约的具体实现.
因此,数据结构是 ADT 的实现,例如堆栈或队列。
但这不也使它成为一种数据类型吗?
我真正能看到的是,数据类型的范围可以从没有任何结构组织的非常简单的事物到复杂的数据结构,真正重要的是它们是 ADT 的实现,反映了 ADT 的重要方面,并且可以设想它们作为单个实体(如列表或树),但数据结构必须至少包含某种逻辑或数学组织才能分类为数据结构,但遗憾的是,这种差异将使许多实体同时成为数据结构和数据类型。
那么简单普通(数据类型)和(数据结构)之间的本质区别是什么?
我很乐意接受一个答案,指定一本关于这个主题的具体书籍,该书足够深入地解释所有这些问题,如果有人可以推荐我一些关于 C 数据结构的好书。
In C, a 数据类型是一个语言级别的构造。预定义类型的数量有限(int
, char
, double
等),并且数量几乎无限派生类型(数组类型、结构类型、联合类型、函数类型、指针类型、原子类型(后者是 C11 中的新增内容))。
任何类型都可以通过一个简单的名称typedef
宣言。对于函数类型或不完整类型以外的任何类型,您可以objects属于那种类型;每个对象占用一个连续的内存区域。
C中可以存在的类型在C标准的6.2.5节中有完整的描述;例如,参见N1570草案 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf.
A 数据结构另一方面,是由您自己的代码定义的构造。该语言没有定义 a 的概念链表, or a 二叉树, or a 哈希表,但是您可以实现这样的数据结构,通常是通过在派生数据类型之上构建它。通常没有这样的东西object这是一个链接列表。链表数据结构的实例由相关对象的集合组成,只有代码的逻辑才能将该集合转换为连贯的实体。但是您的程序通常会使用某种数据类型的对象refer链表数据结构,可能是一个结构体或指向结构体的指针。
您通常会拥有一组对数据结构实例进行操作的函数。这些函数是否是数据结构的一部分是一个困难的问题,我不会在这里尝试回答。
例如,数组既可以被视为一种数据类型,也可以被视为一种数据结构;更准确地说,您可以将其视为使用现有数组类型实现的数据结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)