还剩3页未读,继续阅读
文本内容:
数据结构的形式化定义及两个构成要素的含义
一、定义数据结构的形式化定义数据结构是一个二元组Data_Structures=D,S,其中,D是数据元素的有限集,S是D上关系的有限集
二、结构含义数据结构有两个构成要素
1.数据元素是数据的基本单位,通常作为一个整体进行考虑和处理一个个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位
2.数据项和数据元素的关系数据结构中数据元素之间存在一种或多种特定关系,这些关系可以通过数据项来体现例如,线性结构中,数据元素之间的关系是一条直线上的前后顺序关系;树形结构中,数据元素之间的关系是一种层次关系,根节点在最上面,叶子节点在下面;图状结构中,数据元素之间的关系是一种网状关系,节点之间可以有多条路径相连以上内容仅供参考,建议查阅关于数据结构的文献、资料获取更全面的信息
三、扩展知识数据结构有这么几个比较重要的概念
1.数据数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合数据是计算机程序加工的原料〈数据〉的概念比较抽象和泛泛的
2.数据元素数据元素是数据的基本单位,通常作为一个整体进行考虑和处理〈数据元素〉是一个很具体的概念比如说你有很多笔,「笔」这个概念可以称为〈数据对象》,而你的每一只笔都是一个具体的〈数据元素》
3.数据项一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位一般在研究某个数据结构时,我们只研究到数据项
4.数据对象数据对象是具有相同性质的数据元素的集合,是数据的一个子集〈数据》是一个抽象的概念,〈数据对象》也是较为抽象的概念万「物」皆可为〈数据》,但是数据对象只是将其中性质相同的「物」,范围较元素集中
5.数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合一错结构三要一物理结构(存储结构)数据的运算数据结构三要素PS.个人理解〈数据结构〉的概念比较难以理解,在我看来〈数据结构〉是〈数据对象)的具数据■数据对象数据对象1数据对象2♦某种类型、*,皿一,一,八,另外某种类型数据元素>数据元素11数据结构数据类型2-------♦数据项体实现止匕外,〈数据结构〉还涉及到〈数据类型》的概念数据对象、数据元素、数据结构与数据类型的相互关系
6.数据类型数据类型是一个值的集合和定义在此集合上的一组操作的总称数据类型是和数据结构密切相关的一个概念,它最早出现在高级语言程序中,用以刻画(程序)操作对象的特性(《数据结构一一严蔚敏》)按照“值”的不同特性,高级语言中的数据类型可分为两类(以C语言为例)a.原子类型其值不可再分的数据类型实现如int类型,其范围为-21474836482147483647,可进行的操作有加减乘除....〜b.结构类型其值可以再分解为若干成分(分量)的数据类型C语言中可以使用struct来定义结构类型//定义一个person类struct person{int age;char*name;;〃结构类型的值是由若干个成分按照某种结构组成的,这些成分可以是结构的,也可以是原子的PS.个人理解,如果一个元素为结构类型,那么该结构类型的各个组成成分即为该元素的元素项,如:年19803张三男01月日15年19803李四女02月日15序号姓名生日性别在该人员信息表中:可以将整个数据表看成一种数据类型,称为表格类型;把表格的每一行除第一行看做一个数据类型,称为人员信息类型;把每个人员细分信息各看成不同类型,那么有序号类型int>姓名类型char*>生日类型struct Date、性别类型enum gender第一点,可以看出表格类型是用人员信息类型以某种数据结构实现的,也就是说每个表格类型元素都是由若干个人员信息类型的元素构成,但不能说表格类型就是人员信息类型的谈援对家,只能说表格类型使用了人员信息类型的谈据应象人第二点,可以将人员信息看成一个数据对象表格类型使用了该对象,人员信息类型是该对象的具体实现,那每个人员信息元素都由序号、姓名、生日、姓名这四个数据项构成,这个四个数据项有的是原子类型的,有的是结构类型的第三点,每个数据元素可以包含一个或多个数据项,一个表格元素的数据元素中只包含人员信息一个类型的数据项,而在人员信息元素中包含四个数据项,在下列代码中,日期类型(的数据元素)又包含年月日三个数据项//定义一个人员信息表格类型typedef structtable{Person*p;}Table;int id;//数据项:int类型//定义一个人员信息类型typedef structperson{char*name;//数据项:char*类型Date*birthday;//数据项:自定义struct类型enum gendergender;//数据项:枚举类型}Person;//定义日期类型typedef structdate{int year;int month;int day;}Date;//定义性别枚举enum gender{male=0,female=1综上可知,〈数据、数据对象、数据元素、数据项〉是数据系统中的干,〈数据类型、数据类型〉是数据系统中的枝,可以通过〈数据类型、数据类型》来丰富〈数据对象》,进而丰富整个数据系统(自己瞎总结的)
7.抽象数据类型抽象数据类型(Abstract DataType,ADT)是抽象数据组织及与之相关的操作抽象数据类型(ADT,Abstract DataType)是指一个数学模型以及定义在此数学模型上的一组操作它通常是对数据的某种抽象,定义了数据的取值范围及其结构形式,以及对数据操作的集合一一百度百科数据类型是个具体的概念,如JAVA语言中的int类型,就是一个实际的数据类型,C++又是另一个;而ADT是个抽象的概念,ADT用数学化的语言定义数据的逻辑结构、定义运算与具体的实现无关
四、小结以上七个概念中数据、数据对象、数据元素、数据项比较好理解,剩下三个数据结构、数据类型、抽象数据类型比较难理解,其中
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的思想。
个人认证
优秀文档
获得点赞 0