数据结构–数据结构的基本概念
知识总览:
数据结构的三要素
数据的逻辑结构:
集合
线性结构
树型结构
图形结构
数据的存储结构
ps:链式存储、索引存储、散列存储统称为 非顺序存储 \color{red}{非顺序存储} 非顺序存储
顺序存储
把 逻辑上相邻的元素存储在物理位置上也相邻的存储单元中 \color{red}{逻辑上相邻的元素存储在物理位置上也相邻的存储单元中} 逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
链式存储
逻辑上相邻的元素在物理位置上可以不相邻 \color{red}{逻辑上相邻的元素在物理位置上可以不相邻} 逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。
索引存储
在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字、地址)
散列存储
根据元素的关键字直接计算出该元素的存储地址,又称
哈希
(
H
a
s
h
)
存储
\color{red}{哈希(Hash)存储}
哈希(Hash)存储
ps:第六章,散列表 再介绍
总结
- 若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的。
- 数据的存储结构会影响存储空分配的方便程度。
eg:插队 - 数据的存储结构会影响对数据运算的速度。
eg:查看第7个元素的值
数据运算
数据的运算–施加在数据上的运算包括运算的定义和实现。 运算的定义 \color{red}{运算的定义} 运算的定义是 针对逻辑结构 \color{red}{针对逻辑结构} 针对逻辑结构的,指出运算的功能; 运算的实现 \color{red}{运算的实现} 运算的实现是 针对存储结构 \color{red}{针对存储结构} 针对存储结构的,指出运算的具体操作步骤。
eg:
逻辑结构 – 线性结构(队列)
结合实现需求
定义
\color{red}{定义}
定义队列这种逻辑结构的运算:
- 队头元素出列;
- 新元素入队;
- 输出队列长度;
… …
数据类行、抽象数据类型
数据类型是一个值的集合和定义在此集合上的一组操作的总称。
1) 原子类型:其值不可以再分的数据类型
eg:
bool:
取值范围:True or False
可进行操作:与、或、非 …
int:
取值范围: -2147483648 ~2147483647
可进行操作:加、减、乘、除、模运算 …
2)结构类型:其值可以再分解为若干成分(分量)的数据类型。
eg:
定义一个具体的结构类型,表示排队顾客的信息。
根据具体业务需求来确定值的范围,可进行的操作
值的范围: num ( 1~9999) , people (1~12)
可进行操作:如“拼桌”运算,把人数相加合并
struct Customer
{
int num; //餐号
int people; //就餐人数
... ... //其他信息
}
抽象数据类型(Abstract Data Type,ADT)是抽象数据组织及与之相关的操作。
ps:ADT用数学化的语言定义数据的逻辑结构、定义运算。与具体的实现无关。
知识回顾与考点
ps:
定义一个ADT,就是定义了数据的逻辑结构、数据的运算。也就是定义了一个数据结构。
确定一种存储结构,就意味着在计算机中表示出数据的逻辑结构。存储结构不同,也会导致运算的具体实现不同。确定了存储结构,才能实现数据结构