//顺序队列 初始值MAX-1; rear是队尾位置呢 front是队头元素前一个位置
#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
#define error -1
typedef struct node{
int customer[MAX];
int rear;
int front;
}queue;
void add(queue *q,int item)
{
if((q->rear+1)%MAX==q->front)
{
printf("队列满\n");
return;
}
q->rear=(q->rear+1)%MAX;
q->customer[q->rear]=item;
}
int isempty(queue *q)
{
return q->front==q->rear;
}
int deleteq(queue *q)
{
if(isempty(q))
{
printf("队空\n");
return error;
}
q->front=(q->front+1)%MAX;
return q->customer[q->front];
}
void initial(queue *q)
{
q->rear=q->front=MAX-1;
}
main()
{
int N,i,number,flag;
queue A,B;
initial(&A);
initial(&B);
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d",&number);//可以改成随机数
if(number%2)
add(&A,number);
else
add(&B,number);
}
flag=0;//标记第一个顾客
while(!isempty(&A)&&!isempty(&B))
{
if(!flag)
{
printf("%d",deleteq(&A));
flag=1;
}
else
printf(" %d",deleteq(&A));
if(!isempty(&A))
printf(" %d",deleteq(&A));
printf(" %d",deleteq(&B));
}
while(!isempty(&A))
{
if(!flag)
{
printf("%d",deleteq(&A));
flag=1;
}
else
printf(" %d",deleteq(&A));
}
while(!isempty(&B))
{
if(!flag)
{
printf("%d",deleteq(&B));
flag=1;
}
else
printf(" %d",deleteq(&B));
}
printf("\n");
}
/*
//顺序队列 初始值MAX-1 rear是队尾的下一个位置,front是队头位置
#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
#define error -1
typedef struct node{
int customer[MAX];
int rear;
int front;
}queue;
void add(queue *q,int item)
{
if((q->rear+1)%MAX==q->front)
{
printf("队列满\n");
return;
}
q->customer[q->rear]=item;
q->rear=(q->rear+1)%MAX;
// q->customer[q->rear]=item;
}
int isempty(queue *q)
{
return q->front==q->rear;
}
int deleteq(queue *q)
{
int e;
if(isempty(q))
{
printf("队空\n");
return error;
}
e=q->customer[q->front];
q->front=(q->front+1)%MAX;
return e;
}
void initial(queue *q)
{
q->rear=q->front=MAX-1;
}
main()
{
int N,i,number,flag;
queue A,B;
initial(&A);
initial(&B);
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d",&number);//可以改成随机数
if(number%2)
add(&A,number);
else
add(&B,number);
}
flag=0;//标记第一个顾客
while(!isempty(&A)&&!isempty(&B))
{
if(!flag)
{
printf("%d",deleteq(&A));
flag=1;
}
else
printf(" %d",deleteq(&A));
if(!isempty(&A))
printf(" %d",deleteq(&A));
printf(" %d",deleteq(&B));
}
while(!isempty(&A))
{
if(!flag)
{
printf("%d",deleteq(&A));
flag=1;
}
else
printf(" %d",deleteq(&A));
}
while(!isempty(&B))
{
if(!flag)
{
printf("%d",deleteq(&B));
flag=1;
}
else
printf(" %d",deleteq(&B));
}
printf("\n");
}
*/