#include<stdio.h>
#define QueueSize 20
typedef struct {
   char name[QueueSize];
   char sex;
}Person;typedef struct {
   Person *dancer;
   int front;
   int rear;
   int count;
} CirQueue;void InitQueue(CirQueue *Q)
{
    Q->front=Q->rear=0;
    Q->count=0;
}int QueueEmpty(CirQueue *Q)
{
    return Q->count==0;
}int QueueFull(CirQueue *Q)
{  return Q->count == QueueSize;
}Person QueueFront(CirQueue *Q)
{
    if(QueueEmpty(Q)) printf("The queue is empty.\n");
    return Q->dancer[Q->front];
}void EnQueue(CirQueue *Q,Person dancer)
{
    if(QueueFull(Q)) printf("Team full!\n");
    Q->count++;
    Q->dancer[Q->rear]=dancer;
    Q->rear=(Q->rear+1)%QueueSize;
}Person DeQueue(CirQueue *Q)
{
    Person temp;
    if(QueueEmpty(Q))printf("Team empty!\n");
    temp=Q->dancer[Q->front];
    Q->count--;
    Q->front=(Q->front+1)%QueueSize;
    return temp;
}void DancePartners(Person *dancer, int num)
{   int i; 
    Person P;
    CirQueue  Mdancers, Fdancers;
    InitQueue(&Mdancers);
    InitQueue(&Fdancers);
    for(i=0;i<num;i++)  {
      P=dancer[i];
      if(P.sex=='F')  EnQueue(&Fdancers, P);
      else EnQueue(&Mdancers, P);
    }
    printf("The partner mix is:\n");while(!QueueEmpty(&Fdancers)&&!QueueEmpty(&Mdancers)) {
    P=DeQueue(&Fdancers);
    printf("%s,",P.name);
    P=DeQueue(&Mdancers);
    printf("%s\n",P.name);
}if(!QueueEmpty(&Fdancers)) {
printf("There are %d women in the waiting.\n",Fdancers.count);
P=QueueFront(&Fdancers);
printf("The first waiting's woman is:%s.\n", P.name);
}
if(!QueueEmpty(&Mdancers)) {
printf("There are %d men in the waiting.\n",Mdancers.count-1);
P=QueueFront(&Mdancers);
printf("The first waiting's man is:%s.\n", P.name);
}
}int main()
{
    int i,j; 
    Person dancer[QueueSize];
    printf("\n Please enter the number of the dances:");
    scanf("%d",&j);
    while(j<=0)
    {
      printf("Input error, please input again:");
      scanf("%d",&j);
    }  
    for(i=1;i<=j;i++)
    {
      printf("Please input the %d honored person's name :",i);
      scanf("%s",&dancer[i-1].name);
      printf("Please input the %d honored person's sex (F/M):",i);
      scanf("%s",&dancer[i-1].sex);
      while(dancer[i-1].sex!='F'&&dancer[i-1].sex!='M')
      {
          printf("Input error, please input again:");
          scanf("%s",&dancer[i-1].sex);
      }
    }
    DancePartners(dancer,i);
}