数据结构-数据(Data)

数据(Data)

定义

能输入计算机且能被计算机处理的各种符号的集合

特征

信息的载体;

对客观事物符号化的表示;

能够被计算机识别、存储和加工。

包括

数值型的数据

整数、实数等。

非数值型的数据

文字、图像、图形、声音等。

个人理解

就是把具体的事物抽象化,用某种符号来代表这一类事物,如“人类”代表人所有人。

数据元素(Data element)

定义

数据的基本单位,一个数据元素可由若干个数据项(Data Item)组成。

简称

元素、记录、结点或顶点。

个人理解

组成数据的属性性的集合,如“人类”这个数据中的“人”代表单个人,“人”就是“人类”中的数据元素。

数据项(Data Item)

定义

构成数据元素的不可分割的最小单位

关系

数据 > 数据元素 > 数据项

个人理解

“人”这个数据元素又可分为“头、躯干、四肢”三个属性,每个属性就是一个数据项,由这些数据项组成数据元素,再由这些数据元素组成数据。

数据对象(Data Object)

定义

性质相同的数据元素的集合,是数据的一个子集。

个人理解

“人”这个数据元素,可划分为“亚洲人”、“欧洲人”、“美洲人”、“非洲人”、“大洋洲人”,这些就是数据对象,数据对象就是数据的子集。

数据结构(Data Structure)

定义

数据元素之间的关系称为结构,是指相互之间存在一种或多种特定关系的数据元素集合,是带结构的数据元素的集合。

内容

  1. 数据元素之间的逻辑关系,逻辑结构
  2. 数据元素及其关系再计算机内存中的表示(映像),物理结构存储结构
  3. 数据的运算实现,即对其的操作及存储结构上的实现

逻辑结构

数据元素之间的逻辑关系,与存储无关。

个人理解

”人“与”人“之间的关系。

划分逻辑结构一

线性结构
定义

有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后续。

包括

线性表、栈、队列、串。

个人理解

如同排队一样,只有前一个和后一个,在只有一个队列时,如果有左右的话,那排的也太难受了。

非线性结构
定义

一个结点可能有多个直接前趋和直接后续。

包括

树、图

个人理解

如同人际关系网一样。

划分逻辑结构二

集合结构
定义

结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。

线性结构
定义

结构中的数据元素之间存在着一对一的线性关系。

树形结构
定义

结构中的数据元素之间存在着一对多的层次关系。

图状结构
定义

结构中的数据元素之间存在着多对多的任意关系。

物理结构存储结构

数据元素及其关系再计算机存储器中的结构(存储方式)。

个人理解

”人“是如何存在于现实世界中的,"人"的本质其实就是碳基生命,”人“存在于现实世界的物理结构为碳基结构。

分类

顺序存储结构
定义

用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。

举例

数组

链式存储结构
定义

用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。

举例

链表

索引存储结构
定义

在存储结点信息的同时,建立附加的索引表

索引表中的每一项被称为索引项

索引项的形式为:(关键字,地址)

关键字是唯一标识一个结点的数据项。

如果每个结点在索引表中都有索引项,则称为稠密索引

如果一组结点在索引表中只有一个索引项,则称为稀疏索引

个人理解

索引存储结构,就像是把链表的地址用一个标识符标识,键值对存储方式。

稠密索引就是把一条链表中每一个链表都用索引表的方式存储,而稀疏索引是把一条链表中的头链表用索引表的方式存储,因为只要获得了链表的头链表,就等于获得了这一条链表。

散列存储结构
定义

根据结点的关键字直接计算出该结点的存储地址。

逻辑结构存储结构的关系

存储结构是逻辑结构的映像与元素本身的映像;

逻辑结构是数据结构的抽象,存储结构是数据结构的实现;

两者代表数据元素之间的结构关系。

数据类型(Data Type)

定义

是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。

作用

  • 约束变量或常量的取值范围
  • 约束变量或常量的操作

抽象数据类型(Abstract Data Type)

定义

指一个数学模型以及定义在此数学模型上的一组操作。

  • 由用户定义,从问题抽象出数据模型(逻辑结构)
  • 还包括定义在数据模型上的一组抽象运算(相关操作)
  • 不考虑具体存储结构、实现算法。

形式定义

抽象数据类型可用(D,S,P)三元组表示。

D:数据对象;

S:D上的关系集;

P:对D的基本操作集。

定义格式

ADT 抽象数据类型名{

数据对象:<数据对象的定义>

数据关系:<数据关系的定义>

基本操作:<基本操作的定义>

}ADT 抽象数据类型名

注:数据对象与数据关系用伪码描述。

基本操作定义格式说明:

  • 参数表

    • 赋值参数:只为操作提供输入值。如:求幂运算,这样定义power(x,y)。
    • 引用参数:以&开头,除提供输入值外,还返回操作结果。如:power(&x,y),当函数运行完后将结果返回赋值给x。
  • 初始条件

    描述操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。若初始条件为空,则省略。

  • 操作结果

    说明操作正常完成之后,数据结构的变化状况和应返回的结果。

标准格式
ADT 抽象数据类型名{
	Data
        数据对象的定义
        数据元素之间逻辑关系的定义
    Operation
        操作1
        	初始条件
        	操作结果描述
        操作2
        	...
        操作n
        	...
}ADT 抽象数据类型名
举例

Circle的定义

ADT Circle{
    数据对象:D={r,x,y|r,x,y均为实数}
    数据关系:R={<r,x,y>|r,是半径,<x,y>是圆心坐标}
    基本操作:
        Circle(&C,r,x,y)
        	操作结果:构造一个圆。
        double Area(C)
        	初始条件:园已存在。
        	操作结果:计算面积。
        double Circumference(C)
        	初始条件:圆已存在。
        	操作结果:计算周长。
}ADT Circle

个人理解

将具体事物特征提炼出来,就是抽象化,如“人”,特征就是头、躯干、四肢。

总结

总结

posted @ 2020-06-09 00:17  lisztomania  阅读(2049)  评论(0编辑  收藏  举报