美文网首页
数据结构【队列】

数据结构【队列】

作者: Sky_Mao | 来源:发表于2019-10-18 19:03 被阅读0次

定义:

  一种可以实现“先进先出”的存储结构,比较像在火车站买票。

分类:

  1、链式队列:内部属于链表,对链表的操作做一些限制,就是链式队列
  2、静态队列:内部属于数组
    静态队列通常都必须是循环队列

循环队列释义:

  1、静态队列为什么必须是循环队列如果按照传统的数组来表示插入和删除的话应该是
    这样的:有一个队列一共有6个,队列的实际元素只有5个,rear指向的是无效的元素

图1.png
  如果现在要把“m”删除掉,那么就必须把front指针往上加
  删除后的结果如下图:
图2.png
  如果要把“a”删除的话,也是一样的,需要把front往上加。
  那么这样的话之前的空间就无法再次利用了,如果一个队列这么实现的话就会浪费
  大量内存,最后导致内存占用过高,程序崩溃。
  假设队列是这样的:
图3.png
   想要添加一个“”字,那么rear势必也要往上加,加以后是这样的
图4.png
  rear再往上加,如果是传统的数组的话,这个时候rear已经越界了,那么这样做肯定
  是不行的。
  所以综上所述,静态队列必须是循环队列。
  循环队列表示:
图5.png
  当需要新增一个“”字的时候,让rear指向第一个元素,那么这个时候就
  可以把“”字添加进来了。
  如果我们还需要添加一个“”字,是不是rear再加1就可以了,那么添加后是这样的
图6.png
  假设现在front指向了数组的最后一个元素,我们把“”字给删除掉
图7.png
  循环队列的话,把front只需要指向第一个元素就好了,这样就形成了循环队列。如图:
图8.png

  2、循环队列需要几个参数来确定
    需要两个参数来确定
  3、循环队列各个参数的含义
    两个参数不同场合有不同的含义
    1、队列初始化front、rear的值都是零
    2、队列非空front代表的是队列的第一个元素,rear代表的是
      最后一个有效元素的下一个元素
    3、队列空front和rear的值相等,但是不一定是零
  4、循环队列入队伪算法

入队伪算法.png
  5、循环队列出队伪算法 出队伪算法.png
  6、如何判断循环队列是否为空
    当front与rear相等的时候就为空
  7、如何判断循环队列是否已满
判断队列是否满.png

相关文章

  • 看图说话数据结构之二项队列(优先队列)——原理解析

    数据结构之二叉堆(优先队列)——原理解析,数据结构之二叉堆(优先队列)——java实现,数据结构之左式堆(优先队列...

  • MQ(message queue)

    是什么? 1.什么是队列? 队列是一种先进先出的数据结构。 数据结构 线性数据结构:常用的:线性表、栈、队列、串等...

  • 数据结构-队列(Queue)-FIFO

    数据结构-队列(Queue)-FIFO 队列的接口设计 双端队列-Deque 循环队列-CircleQueue 双...

  • Java数据结构和算法概览

    Java数据结构和算法概览 数据结构 线性数据结构:常见的有一维数组,线性表,栈,队列,双队列,串。 非线性数据结...

  • 刷穿剑指offer-Day20-队列I 队列的使用与基础题型!

    队列的介绍 队列(queue)是一种简单、常用的数据结构,在上一章栈的学习中,我们已经提到了队列这种数据结构。 队...

  • AQS源码浅析(6)——条件队列

    一、ConditionObject数据结构 简单回顾条件队列的数据结构,一个单链表。 条件队列只有在独占模式下才能...

  • C++数据结构探险——队列篇

    数据结构的原理 队列:先进先出(FIFO:first in first out) 普通队列: 环形队列: 以C++...

  • Handler精讲

    讲解本技术点之前需要准备的技术点回顾 队列数据结构 数据结构-队列(queue) - CSDN博客 Java中的T...

  • Queue

    什么是队列?队列是数据结构中比较重要的一种类型(是一种数据结构),它支持 FIFO,尾部添加、头部删除(先进队列的...

  • 队列

    队列 队列数据结构 队列是遵循FIFO (First In First Out, 先进先出, 也称先来先服务) 原...

网友评论

      本文标题:数据结构【队列】

      本文链接:https://www.haomeiwen.com/subject/nnjwmctx.html