数据结构
一、基本概念
-
数据:数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。
-
数据对象:具有相同性质的数据元素的集合,数据的子集。(描述一个群体)
-
数据元素:数据元素是数据的基本单位,通常作为一个整体考虑和处理。(描述一个个体。)
-
数据项:组成数据元素。
-
数据结构:是相互之间存在一种或者多种特定关系的数据元素集合。
数据对象强调数据元素相同,而数据结构强调数据元素之间的关系。
相同的数据元素可以组成不同数据结构;不同的数据元素可以组成相同的数据结构。
举例: 成绩单就是一个数据对象,每个人以及他们的成绩都是数据元素,其中姓名,各科成绩都是数据项。成绩单本身就是一个线性关系。
二、数据结构三要素
1. 逻辑结构:
- 集合:各个元素同属于一个集合。
- 线性结构:数据元素之间一对一,除了第一个元素,所有元素都与唯一的前驱,除最后一个元素,所有元素都有唯一后继。
- 树形结构:数据元素之间一对多。
- 网状结构:数据元素之间多对多。
2. 数据运算:针对某种逻辑结构,结合实际需求,定义基本运算。(增删查改)
3. 物理结构:计算机怎样表示出数据元素逻辑关系。
- 顺序存储:把逻辑相邻的元素在物理位置上也相邻,相对位置反应数据的先后关系。
- 链式存储。逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。
- 索引存储。在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项。
- 哈希存储:根据关键字计算出存储位置。
链式存储、索引存储、哈希存储属于非顺序存储存储,各元素在物理上可以是离散存放的。
顺序存储,各元素在物理上是连续的。
数据存储结构会影响存储空间分配的方便程度,顺序存储需要连续空间,而非顺序则不需要。
数据存储结构会影响数据运算的速度,对于顺序存储增删操作复杂,而非顺序则只需要修改指针或者其他。
总结: 运算的定义是针对逻辑结构的,指出运算的功能。 运算的实现是针对存储结构的,指出运算的具体步骤。
三、数据类型和抽象数据类型
1. 数据类型:
一个值的集合和定义在集合上的操作的总称(操作者需要对操作进行实现)。
例如:
数据类型:bool类型
值的范围:true,false
可执行操作:与、或、非。
1)原子类型。其值不可再分的数据类型。
2)结构类型。其值可以再分解为若干成分(分量)的数据类型。
2. 抽象数据类型:
是抽象数据组织及与之相关的操作(使用者只需要知道构成和操作)。