(一)数据结构的基本概念
1、 数据
数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料
2、 数据元素
是数据的基本单位,一个数据元素可以由很多数据项组成。数据项是构成数据元素的不可分割的最小单位。
3、 数据对象
是具有相同性质的数据元素的集合,属于数据的子集。
4、 数据类型
是一个值的集合和定义在此集合上的一组操作的总称。
(1)原子类型:属于不可再分的数据类型
(2)结构类型:属于可以再分解的数据类型
(3)抽象数据类型:是抽象数据组织及与之相关的操作
5、 数据结构
是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素之间都必然存在某种关系,这种关系称为结构。包括:逻辑结构、存储结构和数据的运算
其中数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于逻辑结构,实现依赖于存储结构。
6、 数据结构三要素
6.1 逻辑结构
逻辑结构是指数据元素之间的逻辑关系,也就是在逻辑关系上来描述数据。
它分为线性结构和非线性结构。例如线性表就是典型的线性结构;集合、树和图是典型的非线性结构。
(a)集合:结构中的数据元素之间除了同属于一个集合外,无其他关系
(b)线性结构:结构中的数据元素之间只存在一对一的关系
(c)树形结构:结构中的数据元素存在一对多的关系
(d)图形结构(网状结构):数据元素存在多对多的关系
6.2 存储结构
(1)顺序存储:把逻辑上相邻的元素存储在物理位置也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。优点:实现随机存取,每个元素占用最少的存储空间。缺点:只能使用相邻的存储单元,可能会产生较多的外部碎片。外部碎片是指还未被分配并由于太小而无法分配的内存空闲区域。
(2)链式存储:不要求逻辑上相邻的元素在物理位置也相邻,通过指示元素存储地址的指针来表示元素之间的逻辑关系。优点:不会出现碎片现象,可以充分利用存储单元;缺点:因存储指针而占用额外的存储空间,只能实现顺序存储
(3)索引存储:在存储元素信息的同时,还建立对应的索引表。索引表中的每一项称为索引项,形式一般为(关键字,地址)。优点:检索速度快;缺点:索引表额外占用存储,增删操作也需要修改索引表,时间复杂度高
(4)散列存储(哈希存储):根据元素的关键字直接计算出该元素的存储地址。优点:检索、增删结点速度很快;缺点:若散列函数不好,可能出现元素存储单元的冲突。
6.3 数据的运算
地址。优点:检索、增删结点速度很快;缺点:若散列函数不好,可能出现元素存储单元的冲突。
6.3 数据的运算
施加在数据上的运算包括运算的定义和实现。定义是针对逻辑结构,指出运算的功能;实现是针对存储结构,指出运算的具体操作步骤。