文章目录
数据结构研究内容基本概念和术语数据 (Data)数据元素(Data Element)数据项 (Data Item)数据对象(Data Object)数据结构(Data Structure)逻辑结构划分方法一 : 线性、非线性方法二 :四类基本结构 物理结构(存储方式)分类(1)顺序存储结构(2) 链式存储结构(3) 索引存储结构(4) 散列存储结构 数据类型(Data Type)定义作用 抽象数据类型 (Abstract Data Type, ADT)形式定义数据结构研究内容
1、这些问题的共性是都无法用数学的公式或方程来描述,是一些“非数值计算”的程序设计问题。
2、描述非数值计算问题的数学模型不数学方程,而是诸如表、树和图之类的具有逻辑关系的数据。
3、数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科
基本概念和术语
数据 (Data)
是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑中用到的字符串,多媒体程序处理的图形、图像、声音及动画等通过特殊编码定义后的数据。
(敲黑板,划重点)
·信息的载体
·是对客观事物符号化的表示
·能够被计算机识别、存储与加工
包括:
数值型的数据:整数、实数等
非数值型的数据:文字、图形、图像、声音等
数据元素(Data Element)
是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素,或称为记录、结点或顶点等。数据元素用于完整地描述一个对象,如一名学生记录,树中棋盘的一个格局(状态),以及图中的一个顶点等。
一个数据元素可由若干个数据项(Data Item)组成。
数据项 (Data Item)
是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据、数据元素于数据项三者关系:
数据 > 数据元素 > 数据项
数据对象(Data Object)
是性质相同的数据元素的集合,是数据的一个子集。例如,整数数据对象是集合N={0 , ±1 ,±2 ,…},学籍表也可以看做一个数据对象。
数据元素与数据的关系:是集合的个体
数据对象与数据的关系:是集合的子集
数据结构(Data Structure)
数据元素不是孤立存在的,它们之间存在着某种关系,数据元素之间的关系称为结构(Structure)。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带 ”结构"的数据元素的集合。
数据结构包括以下三个方面的内容:
1.数据元素之间的逻辑关系,也称为逻辑结构。
2.数据元素及其关系在计算机内存中的表示(又称为映像),称为数据的物理结构或数据的存储结构。
3.数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现。
逻辑结构
·描述数据元素之间的逻辑关系
·与数据的存储无关,是独立千计算机
·从具体问题抽象出来的数学模型理结构
数据的逻辑结构有两个要素: 一是数据元素;二是关系。数据元素的含义如前所述,关系是指数据元素间的逻辑关系。
划分
方法一 : 线性、非线性
(1)线性结构
有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。
例如:线性表、栈、队列、串
(2)非线性结构
一个结点可能有多个直接前趋和直接后继例如:树、图
方法二 :四类基本结构
(1)集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。
(2)线性结构:结构中的数据元素之间存在着一对一的线性关系。
(3)树形结构:结构中的数据元素之间存在着一对多的层次关系。
(4)图状结构或网状结构:结构中的数据元素之间存在着多对多的任意关系。
它们的复杂程度依次递进。
物理结构(存储方式)
·数据元素及其关系在计算机存储器中的结构(存储方式)
·是数据结构在计算机中的表示
分类
(1)顺序存储结构
·用一组连续的存储单击依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
·C语言中用数组来实现顺序存储结构
(2) 链式存储结构
·用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
·C语言中用指针来实现链式存储结构
(3) 索引存储结构
·在存储结点信息的同时,还建立附加的索引表。
·索引表中的再项称为一个索引项。
·索引项的一般形式是:(关键字,地址)
·关键字是能唯一标识一个结点的那些数据项。
·若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引(Dense Index)。若一组结点在索引表中只对应一个索引项,则该索引表称之为稀疏索引(Sparse Index)。
(4) 散列存储结构
·根据结点的长键字直接计算出该结点的存储地址。
逻辑结构与存储结构的关系:
(1)存储结构是逻辑关系的映像与元素本身的映像。
(2)逻辑结构是数据结构的抽象,存储结构是数据结构的实现。
(3)两者综合起来建立了数据元素之间的结构关系。
数据类型(Data Type)
·在使用高级程序设计语言编写程序时,必须对程序中出现的每个变量常量或表达式,明确说明它们所属的数据类型。
例如,C语言中:
(1)提供int,char, float, double等基本数据类型
(2)数组、结构、共用体、枚举等构造数据类型
(3)还有指针、空(void)类型
(4)用户也可用typedef自己定义数据类型
·一些最基本数据结构可以用数据类型来实现,如数组、字符串等
·而另一些常用的数据结构,如栈、队列、树、图等,不能直接用数据类型来表示。
·高级语言中的数据类型明显地或隐含地规定了在程序执行期间变量和表达的所有可能的取值范围,以及在这些数值范围上所允许进行的操作。
例如,C语言中定义变量i为int类型,就表示i是[-min,max]范围的整数,在这个整数集上可以进行+、-、*、\、%等操作
定义
数据类型是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。
即
数据类型=值的集合+值集合上的一组操作
作用
1、约束变量或常量的取值范围,
2、约束变量或常量的操作。
抽象数据类型 (Abstract Data Type, ADT)
是指一个数学模型以及定义在此数学模型上的一组操作。
·由用户定义,从问题抽象出数据模型(逻辑结构)
·还包括定义在数据模型上的一组抽象运算(相关操作)
·不考虑计算机内的具体存储结构与运算的具体实现算法
形式定义
用(D,S,P)三元组表示,其中
D是数据对象,S是D上的关系集,P是D的基本操作集
抽象数据类型的定义格式如下:
ADT 抽象数据类型名{
数据对象:(数据对象的定义〉
数据关系:(数据关系的定义〉
基本操作:(基本操作的定义〉
} ADT 抽象数据类型名
其中,
·数据对象、数据关系的定义用伪代码描述
·基本操作的定义格式为:
基本操作名(参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
参数表:赋值参数只为操作提供输入值。引用参数以&打头,除可提供输入值外,还将返回操作结果。
初始条件:描述操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。若初始条件为空,则省略之。
操作结果:说明操作正常完成之后,数据结构的变化状况和应返回的结果。
举例
Circle的定义
复数的定义
(听课笔记,结合书本以及青大老师的讲解记录)