117.数据结构概述(定义,基本术语,层次)
1.定义
数据结构: 问题的数学模型 数据+结构 数据之间的关系 结构《=》关系
有一个特性相同的数据元素的集合,如果在数据元素之间存在一种或多种特定的关系,则称为一个数据结构。带结构的数据元素的集合 指的是数据元素之间存在的关系 。数据结构是相互之间存在着某种逻辑关系的数据元素的集合。
形式定义描述 数据结构(data structure) 一个二元组 Data_Structure=(D,S) 其中: D是数据元素的有限集,S 是 D上关系的有限集。
数据结构是一门讨论“描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中如何表示和实现”的学科。
2.基本术语
2.1数据
2.1.1数据
数值数据,非数值数据数据(data)
所有能被输入到计算机中,且能被计算机处理的符号(数字、字符、图像、声音等)的集合。是计算机操作的对象的总称。是计算机处理的信息的某种特定的符号表示形式。
2.1.2数据元素(data element)
是数据(集合)中的一个 “个体”,在计算机中通常作为一个整体进行考虑和处理。是数据结构中讨论的基本单位。例如,整数“5”,字符“N”等。
2.1.3数据项(data item)
是不可再分割的“原子”,它是数据结构中讨论的最小单位。又如,描述一个学生的数据元素由多个款项构成,其中每个款项称为一个“数据项”。
2.1.4关键字(key)
能识别一个或几个数据元素的数据项。若能起唯一识别作用,则被称为“主”关键字,否则称为“次”关键字。
2.1.5数据对象(data object)
具有相同特性的数据元素的集合,是数据的一个子集。如:整数、实数等。
2.2数据类型
2.2.1数据类型(data type)
数据类型是一个值的集合和定义在此集合上的一组操作的总称。在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。不同类型的变量,其所能取的值的范围不同,所能进行的操作不同。数据类型是一个值的集合和定义在此集合上的一组操作的总称。对程序员而言,各种语言中的整数类型都是一样的,因为它们的数学特性相同。从这个意义上可称“整数” 是一个抽象数据类型。例如,C 语言中提供的基本数据类型有:整型 int字符型 char实型( C++语言) 浮点型 float双精度型 double逻辑型 bool ( C++语言)
2.2.2抽象数据类型(Abstract Data Type 简称ADT)
1.定义
抽象数据类型和数据类型的实质相同,范畴更广,不局限于语言中的数据类型。是指一个数学模型以及定义在此数学模型上的一组操作
2.抽象数据类型的描述方法
ADT =(D,S,P)
其中:D是数据对象;S 是D 上的关系集;P 是对D 的基本操作集。
ADT 抽象数据类型名 { 数据对象:〈数据对象的定义〉
数据关系:〈数据关系的定义〉
基本操作:〈基本操作的定义〉
}ADT抽象数据类型名
基本操作的定义格式为:
基本操作名(参数表)
初始条件:〈初始条件描述〉
操作结果:〈操作结果描述〉赋值参数 只为操作提供输入值。
引用参数 以&打头,除可提供输入值外还将返回操作结果。
初始条件 描述了操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息操作结果 说明了操作正常完成之后,数据结构的变化状况和应返回的结果。若初始条件为空,则省略之
3.ADT 有两个重要特征
数据抽象
用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)。
数据封装
将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。
4.抽象数据类型的表示和实现
抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。
例如,抽象数据类型复数的定义: ADT Complex { 数据对象:D={e1,e2|e1,e2∈RealSet } 数据关系:R1={<e1,e2> | e1是复数的实数部分,e2 是复数的虚数部分} 基本操作: AssignComplex( &Z, v1, v2 ) 操作结果:构造复数Z,其实部和虚部分别被赋以参数 v1和 v2的值。 DestroyComplex( &Z) 操作结果:复数Z被销毁。 GetReal( Z, &realPart ) 初始条件:复数已存在。 操作结果:用realPart返回复数Z的实部值。 GetImag( Z, &ImagPart ) 初始条件:复数已存在。 操作结果:用ImagPart返回复数Z的虚部值。 Add( z1,z2, &sum ) 初始条件:z1, z2是复数。 操作结果:用sum返回两个复数z1, z2 的和值。 } ADT Complex
3.层次
数据结构包括“逻辑结构” 和“物理结构”两个方面(层次):
3.1逻辑结构
面向问题
逻辑结构 是对数据元素之间的逻辑关系的描述,
它可以用一个数据元素的集合和定义在此集合上的若干关系来表示。
(是数据元素之间客观存在的,与具体的计算机无关)
从关系或结构分下面四个:
{线性结构},
{非线性结构|树型结构,集合结构,图状结构}
3.2存储结构(物理结构)
面向计算机
存储结构是逻辑结构在存储器中的映象
是逻辑结构在计算机中的表示和实现,故又称“存储结构”
“数据元素”的映象
用二进制位(bit)的位串表示数据元素或结点(node)
(321)10 = (501)8 = (101000001)2
“关系”的映象
“关系” 的两种映象方法:
(表示<x, y>的方法)
顺序映象
以x 和 y 之间相对的存储位置表示后继关系,存储结构中只包含数据元素本身的信息
例如:令 y 的存储位置和 x 的存储位置之间相差一个预设常量 C,而 C 是一个隐含值,
链式映象
以附加信息(指针)表示后继关系
需要用一个和 x 绑定在一起的附加信息(指针pointer)指示 y 的存储位置
以“由数据元素 x 的存储映象和附加的指针合成的结点”表示数据元素。
在不同的编程环境中,
存储结构可有不同的描述方法。
当用高级程序设计语言进行编程时,通常可用高级编程语言中提供的数据类型描述之。
3.3逻辑结构和存储结构区别
一、含义不同。
数据的逻辑结构是对数据之间关系的描述,有时就把逻辑结构简称为数据结构。逻辑结构形式地定义为(K,R)(或(D,S)),其中,K是数据元素的有限集,R是K上的关系的有限集。
数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。它包括数据元素的表示和关系的表示。
二、任务不同。
逻辑结构设计的任务是将基本概念模型图转换为与选用的数据模型相符合的逻辑结构。
物理设计的任务是根据具体计算机系统的特点 ,为给定的数据模型确定合理的存储结构和存取方法。
三、反应数据成分不同。
逻辑上的数据结构反映成分数据之间的逻辑关系。
物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。
参考https://zhidao.baidu.com/question/584954501985879805.html?qq-pf-to=pcqq.c2c
https://blog.csdn.net/pengych_321/article/details/50649657