数据结构到底是个啥?轻松学习八类数据结构( 三 )


  • 线性表 , 也就是数组、链表、栈和队列;
  • 树结构 , 包括普通树 , 二叉树 , 红黑树等等;
  • 图存储结构 , 这玩意有点难;
接下来我对这些数据结构做一下简单的介绍 。
  • 线性表
  • 树结构
  • 图结构
  • 等等
在我的专栏有详细介绍,我就不多说了
实际上 , 对于数据的存储该选择什么样的数据结构 , 那就要取决于数据的逻辑结构和物理结构 , 再次声明下 , 这点的理解很重要 , 以下我说的每个字都不要漏掉哦
啥是逻辑结构?不知道你们之前有没有想过这个问题 , 数据的逻辑结构是个啥?可能你有点迷糊 , 但是说起来真的很简单:
数据的逻辑结构就是指的数据之间存在的关系
我想经过上面的讲解 , 你这里立马就知道 , 这里指的关系就是上面说的什么一对一 , 一对多和多对多了 , 不错 , 就是这些 , 这里的数据的逻辑结构指的就是这么些个关系 , 就好比我上面给的那个图 , 我们再来看一下:
我想经过以上的解释 , 你会马上知道这里的关系是指一对一 , 一对多 , 多对多 。不错 , 就是这些 。这里的数据的逻辑结构指的就是这些关系 , 就像我上面给出的图一样 。我们再来看看:
 
数据结构到底是个啥?轻松学习八类数据结构

文章插图
 
例如 , 上图中的大伯 , 二伯和爸爸 , 他们都属于兄弟关系 。爷爷有三个儿子 , 大伯有两个孩子,这种都是一对多的关系 。如果要这样存储数据 , 不仅要存储基本的数据信息 , 还要存储它们之间现有的关系 。
而这种关系即是数据之间的逻辑结构 。
总之 , 数据之间的逻辑结构大致可以分为三种类型 , 即:
  • 一对一:就是那种你挨着我 , 我挨着你的数据 , 比如数组
  • 一对多:就是我们上面画的家谱图那样
  • 多对多:这个比如说地图 , 或者一些四通八达的路 , 能明白我的意思吧
其实吧 , 给到你一些数据 , 你基本上都能判断出这些数据是什么关系 , 也就是说 , 数据的逻辑结构不难辨认 。
到了这里 , 你有没有发现 , 这三种逻辑结构的数据 , 正好可以用我们上面介绍的三大类的数据结构去存储 , 想一下 , 也就是下面三种:
  1. 线性表:一对一
  2. 树结构:一对多
  3. 图结构:多对多
有没有发现 , 万变不离其中啊 , 只是我们了解了逻辑结构这个知识点后 , 你会觉得这块的只是更加的完整 。
物理结构是什么?我们在上面知道了逻辑结构是什么 , 所以我们可以分析数据之间的逻辑结构 , 看看应该使用哪个数据结构来存储数据 。这看似已经万事大吉 , 没啥事了 , 但是 , 实则不然 , 其实吧 , 说到这里 , 牵涉到的知识点又不少 , 我这里只给你说重点 , 详细的以后单独拿出来唠叨唠叨 。
请先记住非常重要的一句话:
数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储)
啥意思嘞?其实吧 , 数组和链表是数据结构中的数据结构 , 其他的数据结构都可以用数组和链表来实现 , 你比如拿栈来说吧 , 可以用数组来实现栈 , 这就叫做顺序栈 , 也可以用链表来实现栈这个就叫做链式栈 。
所以啊 , 每种数据结构的存储其实都可以分为顺序存储(用数组实现)和链式存储(用链表实现)
你比如说要使用队列这个数据结构来存储数据 , 那实际上 , 就可以分为顺序队列实现和链式队列实现 , 也就是看你实际内存中怎样去存储这些数据 , 因此 , 你可以看出 , 数组和链表是数据结构中的基石啊!
那么 , 新的问题就来了 , 既然对于每个数据结构都可以有顺序存储和链式存储 , 那么即时我依据数据的逻辑结构选择了一个数据结构 , 那么我怎么来确定是要顺序存储还是要链式存储呢?


推荐阅读