//循环队列
//判断队满的方法 (Q.rear+1)%MaxSize==Q.front
//队列为空的方法 Q.front==Q.rear
//增删改查,增就是入队,删就是出队
//循环队列入队:定义+初始化+判断是否空+入队
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef int ElemType;
//定义SqQueue
typedef struct{
ElemType data [MaxSize];
int front,rear;
}SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear=Q.front=0;//使队列为空
}
//判断队是否空
bool isEmpty(SqQueue Q){
if(Q.rear==Q.front){
return true;
}
else
return false;
}
//入队,增加队列元素,q必须要引用,因为q是结构体,要改变里面的front和rear袁术,且要入很多次队
bool EnQueue(SqQueue &Q,ElemType x){
if((Q.rear+1)%MaxSize==Q.front){ //判断队列满不满
return false;
}else
Q.data[Q.rear]=x;//把值给rear,因为rear在的位置一般都是空的
Q.rear=(Q.rear+1)%MaxSize;//为了防止rear挪到下个位置时,超出maxsize的限制
return true;
}
//出队,删除队列元素,两个都要加引用,因为要传给主函数
bool DeQueue(SqQueue &Q,ElemType &x){
if(Q.rear==Q.front){//判断队列是否为空,只要相等就为空
return false;
}
else
x=Q.data[Q.front];//先进先出
Q.front=(Q.front+1)%MaxSize;为了防止rear挪到下个位置时,超出maxsize的限制
return true;
}
int main(){
SqQueue Q;
InitQueue(Q);
bool flag;
flag=
}
//利用尾部插入,头部删除,实现先进先出
//队列的链式存储:同时带有队头指针和队尾指针的单链表
13.5线性循环队列的增删+一点点链式循环队列
最新推荐文章于 2024-07-09 17:14:48 发布