数据结构ONE

数据结构 ONE

一. 数据

1.数据项 最小数据单位
2.数据元素 数据的基本单位
3.数据对象 数据元素的集合 数据的子集
数据结构=逻辑结构+存储结构+操作实现

在这里插入图片描述

二.数据的逻辑结构

.一.线性结构 ( 一对多的关系)

1.集合中必须存在唯一的一个“第一个元素”
2.集合中必须存在唯一的一个“最后的元素”
3.除最后一个元素,其他数据元素均有唯一的“后继“
4.除第一个元素外,其他数据元素均有唯一的“前驱”
其实说白了就是一串连着的首尾呼应的糖葫芦,计科专业学过数据结构自动忽略,像和我一样电信专业就是信号与系统里流图的通路一样。

二.非线性结构 (就像族谱一样有分叉)

一个结点元素可能有多个直接的“前驱和后继”
树形结构 一对多的关系
网状结构 多对多的关系
集合结构 一个结合 直接没有关系 关系很弱 不深入研究

问:一个班的学生是什么结构?
打饭时是线性结构 (排成一列)
交作业是树形结构 (组员交给组长,组长交给课代表)
座位是网状结构 (前后左右都有相连)

三.数据的存储结构

1.顺序存储结构:把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言( 例如C/C++ )的数组来描述的。(数据元素的存储对应于一块连续的存储空间 ,数据元素之间的前驱和后续关系通过数据元素,在存储器中的相对位置来反映)。

优点:节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/cpp语言中数组需指定大小的情况) , 结点之间的逻辑关系没有占用额外的存储空间。
采用这种方法时,可实现对结点的随机存取,即每个结点对应一个序号 ,由该序号可以直接计算出来结点的存储地址。

缺点:插入和删除操作需要移动元素,效率较低。

二.链式存储结构:数据元素的存储对应的是不连续的存储空间,每个存储节点对应一个需要存储的数据元素。每个结点是由数据域和指针域组成。元素之间的逻辑关系通过存储节点之间的链接关系反映出来。

特点:
1、比顺序存储结构的存储密度小(每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。
2、逻辑上相邻的节点物理上不必相邻。
3、插入、删除灵活(不必移动节点,只要改变节点中的指针)。
4、查找结点时链式存储要比顺序存储慢(缺点)。

三.索引存储结构:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。比如图书、字典的目录
索引存储结构

四.散列存储结构:根据结点的关键字直接计算出该结点的存储地址,一种神奇的结构,添加、查询速度快。 Hash 数组+链式=牛逼
Hash

逻辑结构是唯一的,而存储结构不是唯一的,数据运算的实现依赖于存储结构。

猜你喜欢

转载自blog.csdn.net/MAKEJAVAMAN/article/details/106782671