#include
#define maxsize 10
typedef struct
{
int data[maxsize];
int front,rear;
}seqqueue;
void init_queue(seqqueue*Q)
{
Q=(seqqueue*)malloc(sizeof(seqqueue));
Q->front=0;
Q->rear=0;
}
int queue_empty(seqqueue Q)
{
if(Q.front==Q.rear)
return 1;
else
return 0;
}
int queue_full(seqqueue Q)
{
if((1+Q.rear)%maxsize==Q.front)
return 1;
else
return 0;
}
void queue_front(seqqueue Q,int &x)
{
if(queue_empty(Q)==1)
printf("队空");
else
x=Q.data[(Q.front+1)%maxsize];
}
void En_queue(seqqueue*Q,int x,int n)
{
int i;
if(queue_full(*Q)==1)
printf("溢出");
else
{
Q->rear=(1+Q->rear)%maxsize;
Q->data[Q->rear]=x;
}
for(i=0;i
}
void Out_queue(seqqueue*Q)
{
if(queue_empty(*Q)==1)
printf("下溢出");
else
Q->front=(Q->front+1)%maxsize;
}
int main()
{
int x,n,i,k;
seqqueue *Q;
init_queue(Q);
printf("请输入循环队列中元素的个数\n");
scanf("%d",&n);
printf("请输入队列中的元素\n");
for(i=0;i
scanf("%d",&Q->data[i]);
printf("请输入下一个元素\n");
}
printf("请选择要进行的操作:1 入队,2 出队");
scanf("%d",&k);
switch(k)
{
case 1:
{
printf("请输入要插入的值 ");
scanf("%d",&x);
En_queue(Q,x,n);
break;
}
case 2:
{
Out_queue(Q);
break;
}
}
return 0;
}