循环队列的基本操作C/C++代码实现

本文介绍了循环队列的结构、求队列长度、入队、出队的操作,以及循环队列的特点。在循环队列中,头指针指向队头,尾指针指向队尾的下一个位置,通过取模实现循环移动。队列长度计算涉及队空和队满的判断条件。代码示例展示了具体的实现过程,并附带了运行结果。
摘要由CSDN通过智能技术生成

循环队列的结构:

在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个位置,阴影部分表示队列:
在这里插入图片描述
另外通过取模,头指针和尾指针就可以在顺序表空间内以头尾衔接的方式 ”循环" 移动。(为了防止假溢出)

注意:循环队列为了方便判断队空和队满,一般少用一个元素空间, 即最后一个元素不用,队列空间大小为m时,有m-1个元素就认为是队满。详情见入队和出队。

求队列长度:

队列长度为:(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE

入队:

队满的条件: (Q rear+ 1)%MAXQSIZE= Q.front

出队:

队空的条件: Q.front == Q.rear

循环队列特点:

与顺序栈相似,如果用户的应用程序中设有循环队列,则必须为它设定一个最大队列长度!若用户无法预估所用队列的最大长度, 则宜采用链队列。

代码如下:

#include<stdio.h>
#include<stdlib.h>

#define MAXQSIZE 100
typedef int QElemType;

//循环队列的结构
typedef struct
{
   
	QElemType *base;	//基地址
	int front;			//头指针
	int rear;			//尾指针
}SqQueue;

//初始化
void InitQueue(SqQueue &Q)
{
   
	Q.base = new QElemType[MAXQSIZE];
	if (!Q.base) exit;		//分配失败退出

	Q.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值