二、逻辑结构和存储结构的细讲

以下两思维导图详细的表诉了笔者今后的更新方向,也是笔者本学期学习的方向。本着互相学习进步的目标,希望各位读者可以和笔者一起共同学习进步!今后如有不足之处希望各位可以在评论区指出,笔者定会详细拜读改正!也希望一起学习的小伙伴可以在评论区打卡自己的学习成果,谢谢各位!

简而言之数据结构的研究内容即是:1研究数据的各种逻辑结构和物理结构以及它们之间的相应关系;2对每种结构定义相应的各种运算;3设计出相应的算法;4分析算法的效率和提升效率。

一,逻辑结构

1,四种:集合结构线性结构树形结构图形结构

1)集合结构

此结构中数据元素属于同一个集合,但是无其他关系,它们之间最大的关系就是属于同一个的结构中。例如,我们在学校上学,加入自己十一班的学生,那么一班的某个自己不认得的学生跟自己的关联属实不大,出了校门谁不也不认识,那么相较于学校这个集合体来说,自己和那个不认识的同学就是集合结构中的两个数据元素,那自己和那个同学都有各自的信息,比如学号、姓名、班级等,这些信息是组成自己(数据元素)的数据项,自己和那个同学的数据项肯定也是无关联的。另外,一个学校也不可能有两个一模一样的同学,也说明了集合结构中的数据元素是不重复的。

  1. 线性结构

具有n个相同的特性的数据元素的有限序列;一对一关系,有如下关系:

集合中必存在唯一的一个"第一个元素";集合中必存在唯一的一个"最后的元素";除最后元素之外,其它数据元素均有唯一的"后继";除第一元素之外,其它数据元素均有唯一的"前驱"。

数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。

如(a0,a1,a2,…,an),a0为第一个元素,an为最后一个元素,此集合即为一个线性结构的集合。

相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。

上图已经尽可能将其运行结构描述出来,之后单独讲到此处会继续深入的去分析运行机制与使用方法和具体代码实现。

3)树形结构

由N(n>0)个节点构成的集合,如果节点数大于一,则就有一个特殊节点,称为根节点,此根节点没有直接前驱。另外在根节点之下的其余节点又会被分为多个互不相交的集合,即上图中的B和EFKL可以为一个集合,那其余的集合也可以被称为一个结构和树类似的子树。但是每棵子树的根节点有且只有一个直接前驱,但是可以有0个或多个后继,所以树符合递归逻辑。

4)图形结构

图形结构又会比树形结构更加复杂一些,图形结构呈现一种多对多的关系,而这种多对多的关系还会被分成无向图和有向图结构。树形结构更加注重的是描述节点之间的直接层次关系,但是图形结构则是描述两个顶点的连通关系。

二、存储结构

1,四种:顺序存储、链式存储、索引存储和散列存储;

1)顺序存储

顺序表即是将线性表中的所有元素按照逻辑顺序依次存储到指定位置开始一块连续空间内。也就是说如果逻辑相邻的数据元素,在物理位置上也是相邻排列,其移动修改数据均要制动其他位置的数据,只要确定好起始位置,那么此线性表中任意元素都可以被找到并且移动,在高级语言中一般用数组来描述此种存储结构。

  1. 链式存储

上图已经尽可能的描述清楚,也是用来存储逻辑一对一的关系的。用一组任意的存储单元存储线性表的数据元素,有数据域和指针域。与顺序表不同的是顺序表知道第一个元素位置,那么可以通过位置去访问其表中的任何元素,但是链表的数据元素的存储位置包含在上一个元素的节点指针域中,所以链表是一个一个的访问的,元素之间都是单线联系的,可以表明链表是不支持随机访问的。顺序表是一段连续的存储空间存储数据的,这个空间都是提前分配的,数据移动只发生在顺序表中,而链表的空间是动态分布的,只要在其前驱存储其位置就可以找到。通过对比就可以知道顺序表适合访问数据,不适合去改动数据,链表只需要插入位置指针就可以实现改动数据。

3)索引存储

索引存储方式是采用附加索引表的方式来存储结点信息的一种存储方式。索引表由若干个索引项组成。索引存储方式中索引项的一般形式为:(关键字、地址)。其中,关键字是能够唯一标识一个结点的数据项。索引存储方式还可以细分为如下两类: *稠密索引(Dense Index):这种方式中每个结点在索引表中都有一个索引项。其中,索引项的地址指示结点所在的的存储位置;*稀疏索引(Spare Index):这种方式中一组结点在索引表中只对应一个索引项。其中,索引项的地址指示一组结点的起始存储位置。

4)散列存储

散列存储方式是根据结点的关键字直接计算出该结点的存储地址的一种存储的方式。在实际应用中,往往需要根据具体数据结构来决定采用哪一种存储方式。同一逻辑结构采用不同额存储方法,可以得到不同的存储结构。而且这四种节本存储方法,既可以单独使用,也可以组合起来对数据结构进行存储描述。

两种结构各自有自己的使用方向,在数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。把数据对象存储到 计算机时,通常要求既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系,数据元素 在计算机内用一个结点来表示。数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。数据的逻辑结构有两个要素: 一是数据元素;二是关系。在这两方面对其逻辑结构和物理结构有更加深入的理解和认识,方便我们对其操作有着更好的理解。

本章主要写数据结构中的逻辑结构和存储结构如何理解和以及二者之间的关系,下一期更新有关线性表的数组和链表相关内容,希望各位读者点赞收藏加关注,一键三连不迷路!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小翟不会写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值