数据结构
数据结构是计算机存储、组织数据的方式,它是指相互之间存在一种或多种特定关系的数据元素的集合。
数据结构的分类
逻辑结构+存储结构
逻辑结构
集合 数据元素都属于这个集合,但数据元素之间并没有什么关系。
1.线性结构 元素具有一对一的关系。
线性结构分为顺序存储和链式存储两种。
顺序存储是由一段地址连续的空间来存储元素;
链式存储是由分散的单元空间来存储元素,存储单元由指针相连接。
2.树形结构 数据元素之间存在一对多的层次关系。
3.图形结构 数据元素存在多对多的关系,每个结点的前驱和后继结点都可以是任意个的。
存储结构
1.顺序存储结构 把逻辑上相邻的结点存储在地址连续的存储单元里,数据元素之间的关系由存储单元是否相邻来体现。
2.链式存储结构 在空间上是一些不连续的存储单元,这些存储单元的逻辑关系通过附加的指针字段来表示。
3.索引存储结构 在存储结点信息的同时,还建立附加的索引表。
稀疏索引:
稠密索引:
4.散列存储结构 又称为哈希(hash)存储,是一种力图将数据元素的存储位置与关键字之间建立确定对应关系的查找技术。
它的基本思想是通过函数关系(哈希/散列函数)计算出一个值,将其作为元素的存储地址。
抽象数据类型
- 抽象数据类型(Abstract Data Type,ADT)是指一个数学模型以及定义在这个模型上的一组操作。
- 抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与它在计算机中的表示和实现无关。
抽象数据类型有两个重要特征:数据抽象和数据封装
- 抽象数据类型在定义时的格式规范:
ADT 抽象数据类型名 { Data: 数据元素之间逻辑关系的定义; Operation: 操作1; 操作2; … }
算法
算法的概念
算法(Algorithm)是解决特定问题的步骤描述,通俗的来讲,算法就是描述解决问题步骤的方法。
线性表的逻辑特征
线性表的结构特征
线性表在存储结构上有顺序存储和链式存储两种,但不管哪种存储方式,它们的结构都有如下特点:
- 均匀性:虽然不同数据表的数据元素可以是各种各样的,但对于同一个线性表来说,数据元素必须具有相同的数据类型和长度。
- 有序性:各数据元素在线性表中的位置只取决于它们的序号,数据元素之间的相对位置是线性的,即存在唯一的“第一个”和“最后一个”数据元素,除了第一个和最后一个外,其它元素前面均只有一个数据元素(直接前驱),后面均只有一个数据元素(直接后继)。
线性表相关操作
可对线性表进行的基本操作如下: