绪论

数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。(来描述一个个体的具体信息) 一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位 数据对象是具有相同性质的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在的一种或多种特定关系的数据元素的集合。 (强调数据元素之间的关系)


34039af54b81682dc20ad126b258663.jpg


下图:同一个数据对象里的数据元素可以组成不同的数据结构

fea5c6ca9d2b055de11a243f822b80d.jpg

当然,不同的数据元素可以组成相同的数据结构


数据元素之间的逻辑关系:

定义一种数据结构

一、集合:(非考点)

非线性结构 各个数据元素同属于同一个集合,没有其他关系

二、线性结构:

线性结构 一对一关系 除了第一个元素,所有的元素都有唯一前驱;除了最后一个元素,其他元素都有唯一后继

三、树形结构:

非线性结构 一对多关系

四、 图结构(网状):

非线性结构 多对多关系


数据的运算:

针对某种逻辑结构,结合实际需求,定义基本运算 例如:对于线性结构的基本运算: 查找第i个数据元素 删除第i个数据元素 在第i个位置插入新的数据元素 ......


数据元素的物理结构(存储结构):

如何用计算机实现这种数据结构?

一、顺序存储

逻辑上相邻的元素在物理位置上也相邻的存储单元中 image.png

二、链式存储

逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系(通过指针表示下一个数据元素的存储地址) image.png

三、索引存储

在存储元素信息的同时,还建立了附加的索引表。索引表记录每一个数据元素的关键字以及各个数据元素存放在内存中的位置。索引表的形式一般是(关键字,地址) image.png

四、散列存储(哈希存储)

根据元素的关键字直接激素拿出该元素的存储地址


小结: 1.若采用顺序存储结构,则各个数据元素在物理上必须是连续的。若采用非顺序存储结构,则各个数据元素在物理上可以是离散的 2.数据的存储结构会影响存储空间分配的方便程度 3.数据的存储结构会影响对数据运算的速度 4.运算的定义是针对逻辑结构的,指出运算的功能。 运算的实现是针对存储结构的,指出运算的具体操作步骤


数据类型、抽象数据类型:

image.png

image.png


算法:

对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每一条指令表示一个或多个操作

算法的满足条件:

①有穷性:程序可以是无穷的 ②确定性:相同的输入只能得到相同的输出 ③可行性: ④输入 ⑤输出

好算法的特质:

正确性: 可读性 健壮性:当输入非法数据时,会做出相应的反应或进行处理 高效率和底存储量需求:时间复杂度低 空间复杂度低

程序=数据结构+算法