文章目录
数据结构:是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。
数据(Data)
- 描述:是能输入计算机且能被计算机处理的各种符号的集合;是信息的载体;是对客观事物符号化的表示;能够被计算机识别、存储和加工。
- 组成:
数值型的数据:整数、实数等;
非数值型数据:文字、图像、图形、声音等。
数据元素(Data Element)
- 描述:简称为元素,或称为记录、结点和顶点。是组成数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
- 组成:一个数据元素可由若干个数据项组成。
数据项(Data Item)
- 概念:构成数据元素的不可分割的最小单位。
数据、数据元素、数据项三者之间的关系:数据>数据元素>数据项
例:学生表
数据对象(Data Object)
- 描述:是性质相同的数据元素的集合,是数据的一个子集。
例:字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’}
整数数据对象是集合N={0,±1,±2,…}
数据元素与数据对象
【数据元素】——组成数据的基本单位
与数据的关系:是集合的个体
【数据对象】——性质相同的数据元素的集合
与数据的关系:是集合的子集
数据结构(Data Structure)
-
描述:数据元素不是孤立存在的,他们之间存在着某种关系,数据元素相互之间的关系称为结构(Structure);是指相互之间存在一种或多种特定关系的数据元素集合,或者说数据结构是带结构的数据元素的集合。
-
组成:
1、数据元素之间的逻辑关系,也称为逻辑结构;
2、数据元素及其关系在计算机内存中的表示(又称为映像),称为数据的物理结构或数据的存储结构;
3、数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现。 -
数据结构的两个层次:
1、逻辑结构:
- 描述:描述数据元素之间的逻辑关系;与数据的存储无关,独立于计算机;是从具体问题抽象出来的数学模型。
- 种类:
划分方法一:
① 线性结构:有且仅有一个开始和终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。例:线性表、栈、队列、串…
② 非线性结构:一个结点可能有多个直接前驱和直接后继。例:树、图…
划分方法二:
① 集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。
② 线性结构:结构中的数据元素之间存在着一对一的线性关系。
③ 树形结构:结构中的数据元素之间存在着一对多的层次关系。
④ 图状结构或网状结构:结构中的数据元素之间存在着多对多的任意关系。
2、物理结构(存储结构):
- 描述:数据元素及其关系在计算机存储器中的结构;是数据结构在计算机中的表示。
- 种类:
① 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。c语言中用数组来实现顺序存储结构。
② 链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。c语言中用指针来实现链式存储结构。
③ 索引存储结构:在存储结点信息的同时,还建立附加的索引表。索引表中的每一项称为索引项,索引项的一般形式是:关键字、地址。关键字是能唯一标识一个结点的那些数据项。若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引;若一组结点在索引表中只对应一个索引项,则该索引表称之为稀疏索引。
④ 散列存储结构:根据结点的关键字直接计算出该结点的存储地址。
3、逻辑结构与存储结构的关系:存储结构是逻辑关系的映像与元素本身的映像;逻辑结构是数据结构的抽象,存储结构是数据结构的实现;两者综合起来建立了数据元素之间的结构关系。
数据类型(Data Type)
- 定义:数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。
数据类型=值的集合+值集合上的一组操作
抽象数据类型(Abstract Data Type,ADT)
- 定义:是指一个数学模型以及定义在此数学模型上的一组操作。
由用户定义,从问题抽象出数据模型(逻辑结构);还包括定义在数据模型上的一组抽象运算(相关操作);不考虑计算机内的具体存储结构与运算的具体实现算法。 - 形式定义:抽象数据类型可用(D,S,P)三元组表示。其中:-D是数据对象;S是D上的关系集;P是D的基本操作集。
抽象数据类型=数据的逻辑结构+抽象运算(运算的功能描述) - 一个抽象数据类型的定义格式如下:
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ATD 抽象数据类型名
#其中:数据对象、数据关系的定义用伪代码描述
#基本操作的定义格式为:
基本操作名(参数表) #参数表:赋值参数只为操作提供输入值。引用参数以&打头,除可提供输入值外,还将返回操作结果。
初始条件:<初始条件描述> #初始条件:描述操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。若初始条件为空,则省略之。
操作结果:<操作结果描述> #操作结果:说明操作正常完成之后,数据结构的变化状况和应返回的结果。
ending~~~
有什么问题欢迎留言噢