#include<iostream> |
using namespace std; |
#define MAXSIZE 1000 |
typedef int QElemType; |
typedef struct |
{ |
QElemType *base; |
int front; |
int rear; |
}SqQueue; |
void InitQueue(SqQueue &Q) |
{ |
Q.base= new QElemType[MAXSIZE]; |
Q.front=Q.rear=0; |
} |
void CreateSqQueue(SqQueue &Q1,SqQueue &Q2, int sum) |
{ |
int a; |
for ( int i=0;i<sum;i++) |
{ |
cin>>a; |
if (a%2) |
{ |
Q1.base[Q1.rear]=a; |
Q1.rear=(Q1.rear+1)%MAXSIZE; |
} |
else |
{ |
Q2.base[Q2.rear]=a; |
Q2.rear=(Q2.rear+1)%MAXSIZE; |
} |
} |
} |
void PrintfSqQueue(SqQueue &Q1,SqQueue &Q2,SqQueue Q3, int s) |
{ |
int a=1; |
while ((Q1.front!=Q1.rear)||(Q2.front!=Q2.rear)) |
{ |
if ((a==1)||(a==2)) |
{ |
if (Q1.front!=Q1.rear) |
{ |
Q3.base[Q3.rear]=Q1.base[Q1.front]; |
Q3.rear=(Q3.rear+1)%MAXSIZE; |
Q1.front=(Q1.front+1)%MAXSIZE; |
} |
} |
else |
{ |
if (Q2.front!=Q2.rear) |
{ |
Q3.base[Q3.rear]=Q2.base[Q2.front]; |
Q3.rear=(Q3.rear+1)%MAXSIZE; |
Q2.front=(Q2.front+1)%MAXSIZE; |
} |
} |
a++; |
if (a>3) |
a=1; |
} |
cout<<Q3.base[Q3.front]; |
Q3.front=(Q3.front+1)%MAXSIZE; |
for ( int i=0;i<s-1;i++) |
{ |
cout<< " " <<Q3.base[Q3.front]; |
Q3.front=(Q3.front+1)%MAXSIZE; |
} |
} |
int main () |
{ |
int sum; |
SqQueue Q1,Q2,Q3; |
InitQueue(Q1); |
InitQueue(Q2); |
InitQueue(Q3); |
cin>>sum; |
if (sum) |
{ |
CreateSqQueue(Q1,Q2,sum); |
PrintfSqQueue(Q1,Q2,Q3,sum); |
} |
else |
cout<< "0" <<endl; |
return 0; |
} |