给定一个初始为空的队(队存储空间长度为10)和一系列进队、出队操作,请编写程序输出经过这些操作后队中的元素。队中元素值均为整数。(采用循环队列完成,禁用一个空间方法)
输入格式:
输入第1行为1个正整数n,表示操作个数;
第2行为给出的n个整数,非0元素表示进队,且此非0值即为进队元素,0元素表示出队。
输出格式:
第一行按出队顺序输出所有出队元素,以一个空格隔开;如果队空时做出队操作会输出"EMPTY",如果队满时做进队操作会输出"FULL"。
第二行中输出队中所有元素,以一个空格隔开。
末尾均有一个空格。
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
typedef struct list{
int front;
int rear;
int data[MAXSIZE];
}NList;
int chaR(NList *Dui,int x){
if((Dui->rear+1)%MAXSIZE==Dui->front){
printf("FULL ");
return 0;
}
if(Dui->front==Dui->rear){
Dui->front=Dui->rear=0;
Dui->data[0]=x;
Dui->rear++;
}else{
Dui->data[Dui->rear]=x;
Dui->rear = (Dui->rear+1)%MAXSIZE;
}
}
int shuC(NList *Dui){
if(Dui->front==Dui->rear){
printf("EMPTY ");
return 0;
}
printf("%d ",Dui->data[Dui->front]);
Dui->front=(Dui->front+1)%MAXSIZE;
}
int main(){
NList *Dui=malloc(sizeof(NList));
Dui->front=Dui->rear=-1;
int n ;scanf("%d",&n);
int x;
for(int i = 1;i<=n;i++){
scanf("%d",&x);
if(x!=0){
chaR(Dui,x);
}else{
shuC(Dui);
}
}
printf("\n");
while(Dui->front!=Dui->rear){
shuC(Dui);
}
}