文章目录
数据结构与算法
一、逻辑结构和物理结构
1.1 提示
术语要知晓背后的关键意义 , 忘记是非常正常的 , 但是对背后关键意义
的理解是非常核心的 , 否则这是会了一套话语体系
1.2 讲清楚数据对象和数据元素
数据
计算机处理的就是这哥们 图片
视频
文本
声波
传感器的数据
前提是都编码进计算机就是要处理的数据
数据对象
数据
是非常的大概念 , 颗粒度太大了 , 不便于具体下手操作 , 比如视频
声波
都说是数据 , 但是他们其实是两个截然不同的领域 , 都有他们各种不同的特点和处理方法 , 不能一概而论 .
数据对象
实际是就是把颗粒度缩小 , 把具有相同特点的归为一个数据对象 . eg : 某一种编码的视频
由于格式统一 , 操作和处理的逻辑是相同的 , 比如 UTF-8编码的文本
都可以是一个数据对象 , 大家操作处理逻辑一毛一样 , 如果编码格式不同理论上讲是两个数据对象 , 也可以看出一种 , 大家都是图片也有共性 , 我觉得不用纠结
数据项
一个数据对象是含有诺干个基本的数据对象
比如快递表单对象
里面有快递地址
用户电话
都是 , 数据项是数据的最小颗粒度划分
数据元素
非常简单 , 数据元素是实例化的的数据对象 . 举个例子是就知道了 . 比如用户
是一个数据对象他有一堆的数据项
比如电话
地址
爱好
都是数据项 , 但这些都是抽象的 , 或者是模板 , 只有具体到某一具体的人才是数据元素 .
1.2部分总结 :
数据
现在不管啥都能量化到计算机里 , 或者逼近 , 这概念太大 , 不讲了
数据对象
就是一个模板数据项
本质就是模板的子项
数据元素
就是模板的实例化对象如图:
1.3 数据元素之间的关系
数据结构是什么 ? 数据结构有哪些
step1:数据结构是什么
数据结构
就是数据元素
之间的关系
, 核心点就是关系
step2:数据结构有哪些
数据结构有两个视角
, 一个是逻辑
一个是物理
- 逻辑结构
- 物理结构
逻辑结构
是灵魂
, 物理结构
是一个实现
- 四种逻辑结构
集合结构 :
和数学的集合类型一样 , 元素唯一的关系就是属于同一个集合 , 集合严格讲还是有三个基本特点的 互异性
无序
确定
集合核心的观点还是无序
, 数据元素之间没啥关系 . 严格
的集合元素不能重复
, 但是非要重复也行 , 毕竟理论是理论 , 反正核心是无序
. 纯正的无序关系 . 大家摆在一起而已 . 集合可以为空
, 随便 , 不在乎 , 严格讲是要互异
, 不互异
很像堆
, 没啥关系 ,
线性结构 :
强调的还是元素之间的关系 , 线性结构也可以没有数据元素 . 特点是 数据元素
有直接前驱
和直接后驱
如果存在直接前驱
, 那么直接前驱
是唯一的 , 如果有直接后驱
那么直接后驱
也是唯一的 , 和排队是一毛一样的 , 如果你前面有人 , 你的前面也就一个人(直接) ,没有哪你就是第一个了 , 如果你的后面有人 , 你的后面本质就一个人(直接) , 如果没有那就是队尾了 , 当然也有可能队头和队尾是同一个人 , 文字不想看直接看图 . 元素之间也不强调互异性
注意
我们谈元素的前继和后继的前提是元素本身是存在
的 , 否则就是讲空气
, 属于迷惑行为 . 一个排队的案例可能是数据元素
为空
的 , 但是我们认为这里是要排队的 , 只是暂时没有人排队而已 . 大家应该能理解 .
树形结构 :
和其他数据结构一样 , 他也是数据元素
之间的关系 , 不强调元素之间的互异性
树形结构可以是空
的 , 也就是没有元素 . 如果有数据元素
数据元素的关系就是一种层级的关系最上面的数据元素
叫做根节点 , 他的下面可以有很多的子节点(数据元素
) , 每个根节点的子节点又可以有无限的子节点(数据元素
),总结
来讲就是每个节点
(数据元素)[除了根节点
(数据元素)]都有唯一的双亲节点
(数据元素) , 也可以有无穷多的子节点
,当然也可以没有.
用一副图来表明比较好 .
看到每个节点
都有双亲节点
(除了根节点
)
每个节点
(包括根节点
)的子节点
的数量是任意的可以没有0,也可以很多.
注意
双亲
和子
只是一个相对的概念 , 是对某一个节点而言的
图形结构 :
什么是图形结构 , 和树形结构的区别在哪里
树形结构没有一个层级的概念 , 每个节点
可以和其他节点相连
, 和现实人和人之间很像 , 理论上你可以和任何人交流 , 图必须要有一个节点
,否则就不是图了 , 节点
相连就会成为一条边
, 可以有方向
也可以没有方向
1.3部分总结:
数据结构本质就是两个点 , 数据元素有哪些 , 数据元素之间的关系是什么 .
数据元素
本质就是一个数据地址
, 这个空间里面存储了内容
数据元素
之间的关系
本质就是不同地址之间的关系