#include<stdio.h>
#include<malloc.h>
#define max 9
typedef int elemtype;
typedef struct
{
elemtype data[max];
int front,rear;
} que;
void initque(que *&qu)
{
qu=(que *)malloc(sizeof(que));
qu->front=qu->rear=0;
}
void destroyque(que *&qu)
{
free(qu);
}
bool enque(que *&qu,elemtype e)
{
if((qu->rear+1)%max==qu->front)
return false;
else
{
qu->rear=(qu->rear+1)%max;
qu->data[qu->rear]=e;
return true;
}
}
bool deque(que *&qu,elemtype &e)
{
if(qu->front==qu->rear)
return false;
else
{
qu->front=(qu->front+1)%max;
e=qu->data[qu->front];
return true;
}
}
bool queempty(que *&qu)
{
return (qu->front==qu->rear);
}
void number(que *&qu)
{ int i;
elemtype x;
printf("排序后序列: ");
while(!queempty(qu))
{
deque(qu,x);
printf("%2d",x);
if(!queempty(qu))
{
deque(qu,x);
enque(qu,x);
}
}
printf("\n");
destroyque(qu);
}
int main()
{ int i;
elemtype e;
que *qu;
initque(qu);
printf("排序前序列: ");
for(i=1;i<max;i++)
{
scanf("%d",&e);
enque(qu,e);
}
number(qu);
return 0;
}