《数据结构的形式化定义及两个构成要素的含义.docx》由会员分享,可在线阅读,更多相关《数据结构的形式化定义及两个构成要素的含义.docx(5页珍藏版)》请在优知文库上搜索。
1、数据结构的形式化定义及两个构成要素的含义一、定义数据结构的形式化定义:数据结构是一个二元组DatastrUCtUres=(D,S),其中,D是数据元素的有限集,S是D上关系的有限集。二、结构含义数据结构有两个构成要素:1 .数据元素:是数据的基本单位,通常作为一个整体进行考虑和处理。一个个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。2 .数据项和数据元素的关系:数据结构中数据元素之间存在一种或多种特定关系,这些关系可以通过数据项来体现。例如,线性结构中,数据元素之间的关系是一条直线上的前后顺序关系;树形结构中,数据元素之间的关系是一种层次关系,根节点在最上面,叶子节
2、点在下面;图状结构中,数据元素之间的关系是一种网状关系,节点之间可以有多条路径相连。以上内容仅供参考,建议查阅关于数据结构的文献、资料获取更全面的信息。三、扩展知识数据结构有这么几个比较重要的概念:1 .数据数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。数据的概念比较抽象和泛泛的。2 .数据元素数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。数据元素是一个很具体的概念。比如说你有很多笔,一笔这个概念可以称为数据对象,而你的每一只笔都是一个具体的数据元素。3 .数据项一个数据元素可由若干数据项组成,
3、数据项是构成数据元素的不可分割的最小单位。一般在研究某个数据结构时,我们只研究到数据项。4 .数据对象数据对象是具有相同性质的数据元素的集合,是数据的一个子集。数据是一个抽象的概念,数据对象也是较为抽象的概念。万物皆可为数据,但是数据对象只是将其中性质相同的物,范围较元素集中。5 .数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合。逻辑结构三要素二/物理结构(存储结构)数据的运算数据结构三要素PS.个人理解:数据结构的概念比较难以理解,在我看来数据结构是数据对象的具体实现。此外,数据结构还涉及到数据类型的概念。数据t数据对象t数据元素.数据项数据对象1某种类型、数据元素1数据对
4、象2.,另外某种类型 数据类型2 数据对象、数据元素、数据结构与数据类型的相互关系6 .数据类型数据类型是一个值的集合和定义在此集合上的一组操作的总称。数据类型是和数据结构密切相关的一个概念,它最早出现在高级语言程序中,用以刻画(程序)操作对象的特性。(数据结构一一严蔚敏)按照“值”的不同特性,高级语言中的数据类型可分为两类(以C语言为例):a.原子类型。其值不可再分的数据类型。如int类型,其范围为-21474836482147483647,可进行的操作有加减乘除.b.结构类型。其值可以再分解为若干成分(分量)的数据类型。c语言中可以使用struct来定义结构类型。/定义一个person类s
5、tructperson(intage;char*name;;结构类型的值是由若干个成分按照某种结构组成的,这些成分可以是结构的,也可以是原子的。PS.个人理解,如果一个元素为结构类型,那么该结构类型的各个组成成分即为该元素的元素项,如:序号姓名生曰性别01张三1980年3月15日男02李四1980年3月15日女在该人员信息表中:可以将整个数据表看成一种数据类型,称为表格类型;把表格的每一行(除第一行)看做一个数据类型,称为人员信息类型;把每个人员细分信息各看成不同类型,那么有序号类型(int)、姓名类型(char*)生日类型(structDate)、性别类型(enumgender)。第一点,可
6、以看出表格类型是用人员信息类型以某种数据结构实现的,也就是说每个表格类型元素都是由若干个人员信息类型的元素构成,但不能说表格类型就是人员信息类型的微提对象),只能说表格类型使用了人员信息类型的磁娜像人第二点,可以将人员信息看成一个数据对象(表格类型使用了该对象,人员信息类型是该对象的具体实现),那每个人员信息元素都由序号、姓名、生日、姓名这四个数据项构成,这个四个数据项有的是原子类型的,有的是结构类型的。第三点,每个数据元素可以包含一个或多个数据项,一个表格元素的数据元素中只包含人员信息一个类型的数据项,而在人员信息元素中包含四个数据项,在下列代码中,日期类型(的数据元素)又包含年月日三个数据
7、项。定义一个人员信息表格类型typedefstructtablePerson*p;Table;/定义一个人员信息类型typedefstructpersonintid;/数据项:int类型char*name;/数据项:Char*类型Date*birthday;/数据项:自定义Struet类型enumgendergender;数据项:枚举类型Person;/定义日期类型typedefstructdateintyear;intmonth;intday;Date;/定义性别枚举enumgendermale-0,female-1);综上可知,(数据、数据对象、数据元素、数据项是数据系统中的干,数据类型、
8、数据类型是数据系统中的枝,可以通过数据类型、数据类型来丰富数据对象,进而丰富整个数据系统。(自己瞎总结的)7 .抽象数据类型抽象数据类型(AbstractDataType,DT)是抽象数据组织及与之相关的操作。抽象数据类型(ADT,AbstractDataTyPe)是指一个数学模型以及定义在此数学模型上的一组操作。它通常是对数据的某种抽象,定义了数据的取值范围及其结构形式,以及对数据操作的集合。一一百度百科。数据类型是个具体的概念,如JAVA语言中的int类型,就是一个实际的数据类型,C+又是另一个;而ADT是个抽象的概念,ADT用数学化的语言定义数据的逻辑结构、定义运算。与具体的实现无关。四
9、、小结以上七个概念中:数据、数据对象、数据元素、数据项比较好理解,剩下三个:数据结构、数据类型、抽象数据类型比较难理解,其中:1 .数据结构是存在一种或多种关系的数据集合,在数据对象上多了一层数据关系的概念,数据关系引出后面逻辑结构、物理结构和运算的概念;2 .数据类型是是一个值的集合和定义在此集合上的一组操作的总称。数据类型与数据结构关系密切,数据类型在高级语言中起到描述的数据对象作用,数据结构在高级语言中的具体实现离不开该语言中的数据类型。3 .一个新的数据类型需要借用已有的数据类型(数据对象)以及数据结构来实现,但是数据类型与具体环境紧密相关,同类的类型在不同的环境下其性质、操作或多或少存在差异性。如int类型,即便是在C+中,不同的操作系统,其int类型大小都不太一样(在64位下为8个字节,在32位下为4个字节,某些环境下为2个字节),java中int为4个字节。因此,我们可以不考虑具体环境,只考虑数据结构与数据对象,从数据类型中抽象出ADT概念来。之前简单的学习过C+和Java,对数据结构的概念不是很了解,个人感觉,C语言对数据结构的支持不算很好,C+和JaVa里引进了类的概念,能够对数据类型进行很好的封装,而C语言须借用struct才能创建数据类型,且数据类型的操作需要在外部定义函数。此外,C+对ADT的支持不如Java,java中的接口就融合了ADT的思想。