[c++]代码库
#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;
}