队列——循环队列

循环队列是一个大小确定的特殊队列,它的特殊体现在循环,之前提到的普通队列,我们是用链表来实现的,在这里,由于循环队列是一个长度确定的队列,所以我们可以拿顺序表来实现。循环队列的操作与普通队列类似,不过不同的地方在于当rear走到capacity-1并且front在0号元素位置的时候,当此时再有元素入队,则不能入队,如果此时有元素出队,则可以继续入队。如下图在这里插入图片描述
我们知道这个循环队列的capacity是6,此时图中所示表示该循环队列已满,则此时不能在入队。讲到这里则就会有人想到,判断循环队列满队的时候,可以通过rear是否等于front来判断队列是否满队。这样是不可取的比如下图
在这里插入图片描述
当该队列出队时front和rear相遇,此时虽然它俩相等,但很明显此时队列不为空。所以为了便于判断循环队列是否满队,我们引入两个变量,分别代表该队列的容量capacity和当前队列大小size

循环队列的创建

以下是创建循环队列的主体。
(这里为了方便描述,统一用int类型表示在实际编写中,大家可以用typedef来定义自己想要的数据类型。)

#include<stdio.h>
#include<stdlib.h>
typedef struct queue
{
   
  int* array;    //队列
  int front;   //头
  int rear;    //尾
  int size;    //当前大小
  size_t capacity;      //容量
}cqueue;

循环队列创建的接口

cqueue* cqueuecreat(size_t k) //循环队列的初始化
bool cqueueenqueue(cqueue* mq,int vaule)   //入队
bool cququedequeue(cqueue* mq)    //出队
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值