数据结构C(1)——数据结构的基本概念
数据结构相关概念
数据结构包括以下三个方面的内容
- 数据元素之间的逻辑关系,也称为逻辑结构
- 数据元素及其关系在计算机内存中的表示(又称为映像),称为数据的物理结构或数据的存储结构
- 数据的运算和实现,即对数据元素可以施加的操作以及这些操作咋相应的存储结构上的实现
逻辑结构
- 描述数据元素之间的逻辑关系
- 与数据的存储无关,独立于计算机
- 是从具体问题抽象出来的数学模型
逻辑结构种类
-
线性结构:有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继
如:线性表、栈、队列、串
-
非线性结构:一个结点可能有多个直接前趋和直接后继
如:树、图
物理结构(存储结构)
- 数据元素及其关系在计算机存储器中的结构(存储方式)
- 是数据结构在计算机中的表示
存储结构种类
- 顺序存储结构
- 用一组连续的存储单元一次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示
- C语言中用数组来实现顺序存储结构
- 链式存储结构
- 用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示
- C语言中用指针来实现链式存储结构
- 索引存储结构
- 在存储结点信息的同时,还建立附加的索引表
- 索引表中的每一项成为一个索引项
- 索引项的一般形式是:关键字,地址
- 关键字是能唯一标识一个结点的那些数据项
- 若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引(Dense Index)。若一组结点在索引表中只对应一个索引项,则该索引表称之为稀疏索引(Sparse Index)
- 散列存储结构
- 根据结点的关键字直接计算出该结点的存储地址
逻辑结构与存储结构的关系
- 存储结构是逻辑关系的映像与元素本身的映像
- 逻辑结构是数据结构的抽象,存储结构是数据结构的实现
- 两者综合起来建立了数据元素之间的结构关系
算法
算法与程序
-
算法是解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法
-
程序是用某种程序设计语言对算法的具体实现
程序=数据结构+算法
- 数据结构通过算法实现操作
- 算法根据数据结构设计程序
算法特性
- 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成
- 确定性:算法中的每一条指令必须有确切的含义,没有二义性,在任何条件下,只有唯一的一条执行路径,即对于相同的输入只能得到相同的输出
- 可行性:算法是可执行的,算法描述的操作可以通过已经实现的基本操作执行有限次来实现
- 输入:一个算法有零个或多个输入
- 输出:一个算法有一个或多个输出
算法设计的要求
- 正确性(Correctness)
- 可读性(Readability)
- 健壮性(Robustness)
- 高效性(Efficiency)