判断队列空:front==rear。判断队列满:(rear+1)%m=front
#include<bits/stdc++.h>
using namespace std;
typedef struct
{
int *elem;
int f;
int r;
}node;
void Push(node &L,int n)
{
int m,t=n;
while(t--)
{
scanf("%d",&m);
L.elem[L.f]=m;
L.f=(L.f-1+n)%n;
}
}
void Pop(node &L,int n)
{
int flag=1,t=n;
while(t--)
{
if(flag) flag=0;
else printf(" ");
printf("%d",L.elem[L.r]);
L.r=(L.r-1+n)%n;
}
printf("\n");
}
int main()
{
int n;
while(scanf("%d",&n)==1&&n)
{
node L;
L.elem=new int[n];
L.f=L.r=0;
Push(L,n);
Pop(L,n);
}
}