问题:对于舞伴配对问题,先人队的男士或女士先出队配成舞伴,因此设置两个队列分别存放男士和女士人队者。假设男士和女士的记录存放在一个数组中作为输人,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。此时,若某队仍有等待配对者,则输出此队列中排在队头的等待者的姓名,此人将是下一轮舞曲开始时第一个可获得舞伴的人。
已经写了一部分,希望能办我修改和补充一下代码,以完善上面的功能
#include<stdio.h>
#include<stdlib.h>
type struct
{
char name[20];
char sex;
}Person;
#define MAXQSIZE 100
typedef struct
{
Person *base;
int front;
int rear;
}SqQueue;
SqQueue Mdancers,Fdancers;
Status InitQueue(SqQueue &Q)
{
Q.base=new QElemType[MAXQSIZE];
if(!Q.base)
exit (OVERFLOW);
Q.front =Q.rear=0;
return OK
}
void DancePartner(Person dancer[],int num)
{
InitQueue(Mdancers);
InitQueue(Fdancers);
for(i=0;i<num;i++)
{
p=dancer[i];
if(p.sex=='F')
EnQueue(Fdancer,p);
else
EnQueue(Mdancers,p);
}
cout<<"the dancing partners are:\n;
while(!QueueEmpty(Fdancers)&&!QueueEmpty(Mdancers))
{
DeQueue(Fdancers,p);
cout<<p.name<<" ";
DeQueue(Mdancers,p);
cout<<p.name<<endl;
}
if(!QueueEmpty(Fdancers));
{
p=GetHead(Mdancers)
cout<<"the first man to get a partner is:"<<p.name<<endl;
}
}
int main()
{
}