循环队列的基本操作
#include<stdio.h>
#include<stdlib.h>
#include<String.h>
#define MaxSize 100
typedef struct{
int data[MaxSize];
int front,rear;
}SqQueue;
SqQueue Createqueue(SqQueue Q){
Q.front=Q.rear=0;
printf("循环队列已初始化!");
return Q;
}
SqQueue Enqueue(SqQueue Q,int e){
if((Q.rear+1)%MaxSize==Q.front)
printf("循环队列已满!");
else{
Q.data[Q.rear]=e;
Q.rear=(Q.rear+1)%MaxSize;
printf("%d已入队!",e);
}
return Q;
}
SqQueue Dequeue(SqQueue Q) {
if(Q.front==Q.rear)
printf("循环队列为空!");
else{
int e=Q.data[Q.front];
Q.front=(Q.front+1)%MaxSize;
printf("%d已出队!",e);
}
return Q;
}
SqQueue Showqueue(SqQueue Q){
if(Q.front==Q.rear)
printf("循环队列为空!");
else{
while(Q.front!=Q.rear){
printf("%d ",Q.data[Q.front]);
Q.front=(Q.front+1)%MaxSize;
}
}
}
int main()
{
SqQueue Qa;
char str;
int e;
Qa=Createqueue(Qa);
printf("请选择循环队列操作:\nA:进对\tB;出对\tC;输出循环队列\n");
while(str!='C')
{
printf("请选择操作:");
scanf("%s",&str);
switch(str){
case 'A':
printf("请输入进对的值:");
scanf("%d",&e);
Qa=Enqueue(Qa,e);break;
case 'B':Qa=Dequeue(Qa);break;
case 'C':Showqueue(Qa);break;
default:printf("输入不合理,请重新输入");break;
}
}
}