静态队列为什么必须是循环队列

本文深入探讨了基于数组实现的静态队列存在的问题,并提出通过循环队列的方式解决这些问题的方法。文章详细解释了循环队列的工作原理,包括其入队、出队的操作流程,以及如何判断队列是否为空或已满。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先静态队列是基于数组实现的,如果是普通数组,规定font指向第一个元素的位置,rear指向最后一个元素位置的下一个位置


假设现在进行入队操作,此时 rear(后面)指针往后移动一位;出队则是font向后移动一位,此时会出现一个问题,

就是已经删除的元素所使用的空间无法继续使用;


因为每次入队或者出队都是font或者rear向后移动一位,font指针无法往前移动,此时就会造成删除的空间无法使用!!

到此处应该就想到了另外一种解决方法,循环队列即可解决问题


需要明白以下几个问题
  1.静态队列为什么必须要是循环队列?
    因为静态队列是基于数组实现的,如果不用循环队列,会导致删除的元素所使用的空间无法继续使用,造成空间的浪费 
  2.循环队列需要几个参数来确定?以及各个参数的含义
         需要2个参数,第一个参数是front(前面),第二个参数是rear(后面);
2个参数在不同的场合下有不同的含义
   1.队列初始化
      front和rear的值都为0;
    2.队列非空
      front代表队列的第一个元素,
rear代表队列的最后一个有效元素的下一个元素 
    3. 队列空
     front和rear的值相等,但是不一定是0;因为是循环队列; 
  3. 循环队列入队伪算法
  两步完成:
  1 .将值存入rear代表的位置
  2.将 rear的值变成(rear+1)%数组的长度  (这样就可以循环) 
  4.循环队列出队伪算法
  将front的值变成(front+1)%数组的长度 
  5.如何判断循环队列是否是空?
  如果front和rear的值相等,队列为空 
  6.如何判断循环队列是否已满? 
  预备知识
  front的值可能比rear的值大,也可能小,也可能相等
两种方式
1. 多增加一个标识参数,用于表示元素的个数,这种不常用,因为要多维护一个参数 
2. 少放一个元素(假设有6个元素,放5个就规定满了)  
   条件 当(rear+1)%数组的长度=front时,队列就满了 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值