数据与数据结构
1. 数据
1.1 数据(data)
- 数据:是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
1.2 数据大致分的两类:(1)数值性数据;(2)非数值数据
- 数值性数据:主要包括整数、浮点数、复数、双精度数等,主要用于工程和科学计算,以及商业事务处理。
- 非数值数据:主要包括字符和字符串,以及文字、图形、图像、语音等数据。
1.3 数据元素(data element)
- 数据元素是数据的基本单位,一个数据元素可由若干个数据项(data item)组成,它是一个数据整体中相对独立的单位。
1.4 数据元素中的数据项可以分为两种:(1)初等项;(2)组合项
- 初等项:初等项是在数据处理时不能再分割的最小单位,如学生性别、籍贯等。
- 组合项:组合项是在数据处理使可以再划分为若干个更小的项,通常在解决实际问题时把它当作一个基本单位进行访问和处理,如学生的成绩,可以再划分为物理、化学等更小项。
2. 数据结构
2.1 数据结构(data structure)
- 数据结构是计算机中对数据的一种存储和组织方式,同时也泛指相互之间存在一种或多种特定关系的数据的集合。
- 数据结构由某一数据元素的集合和该集合中数据元素之间的关系组成。可表示为Data_Structure={D, R}
(1)D:是某一数据元素的集合。
(2)R:是该集合中所有数据元素之间的关系的有限集合。
2.2 数据结构的内容
2.2.1 数据的逻辑结构
- 数据的逻辑结构(Logical Structure):也就是数据元素之间的逻辑关系。
- 数据的逻辑结构是从逻辑关系上描述数据的,与数据在计算机中如何存储无关,也就是独立于计算机的抽象概念。
- 从数学分析的角度来看,数据的逻辑结构可看做是从具体问题抽象出来的数学模型。
2.2.2 数据的存储结构
- 数据的存储结构(Storage Structure):也就是数据元素及其逻辑关系在计算机存储器中的表现形式。
- 计算机的存储结构依赖于语言,是逻辑结构用计算机语言的实现。
2.2.3 数据的运算
- 数据的运算:也就是能够对数据施加的操作。
- 数据的运算基础在于数据的逻辑结构上,每种逻辑结构都可以归纳一个运算的集合。
- 在数据结构的范畴内,最常用的运算包括检索、插入、删除、更新、排序等。
2.3 数据结构的分类
注:数据结构有很多种,一般来说,按照数据的逻辑结构对其进行简单的分类,包括线性结构和非线性结构两类。
2.3.1 线性结构(linear structure)
- 简单地说,线性结构就是表中各个结点都具有线性关系。如果从数据结构的语言来描述,线性结构应该包括如下三点:
(1)线性结构是非空集。
(2)线性结构有且仅有一个开始结点和一个终端节点。
(3)线性结构所有结点都最多只有一个直接前驱结点和一个直接后继结点。 - 线性结构也称为线性表,在这种结构中所有数据元素都按某种次序排列在一个序列中。根据对线性结构中数据元素存取方法的不同,又可分为以下三大类:(1)直接存取结构;(2)顺序存取结构;(3)字典结构;
2.3.2 非线性结构(nonlinear structure)
- 简单地说,非线性结构就是表中各个结点之间具有多个对应关系。如果从数据结构的语言来描述,非线性结构应该包括如下两点:
(1)非线性结构是非空集。
(2)非线性结构的一个结点可能有多个直接前趋结点和直接后继结点。 - 在非线性结构中各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或多个其他数据元素发送联系。根据关系的不同,可分为两大类:(1)层次结构;(2)群结构。
2.4 数据结构的几种存储方式
2.4.1 顺序存储方式
- 简单地说,顺序存储方式就是在一块连续的存储区域一个接着一个地存放数据。
- 顺序存储方式把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。
- 顺序存储方式也称为顺序存储结构(SequentialStorageStructure),—般采用数组或者结 构数组来描述。
2.4.2 链接存储方式
- 链接存储方式比较灵活,不要求逻辑上相邻的结点在物理位贾上相邻,结点间的逻辑关系由附加的指针字段表示。一个结点的指针字段往往指向下一个结点的存放位置。
- 链接存储方式也称为链式存储结构(LinkedStorageStructure),—般在原数据项中增加指针类型来表示结点之间的位置关系。
2.4.3 索引存储方式
- 索引存储方式是采用附加的索引表的方式来存储结点信息。
- 索引表由若干索引项组成,索引存储方式中索引项的一般形式为:
(关健字.地址) - 关键字是能够唯一标识一个结点的数据项。
- 索引存储方式还可以细分为两类。
(1)稠密索引(Dense Index):这种方式中每个结点在索引表中都有一个索引项,其中,索引项的地址指示结点所在的存储位置。
(2)稀疏索引(SpareIndex):这种方式中一组结点在索引表中只对应一个索引项。其中,索引项 的地址指示一组结点的起始存储位置。
2.4.4 散列存储方式
- 散列存储方式是根据结点的关键字直接计算出该结点的存储地址的一种存储方式。
参考文献:
[1]《数据结构(用面向对象方法与C++语言描述)(第2版)》殷人昆——第一章
[2]《C/C++常用算法手册》秦姣华、向旭宇——第二章