数据结构 舞会问题,不知道哪里有问题,运行不了,如何解决?

#include<stdlib.h>
#include<iostream>
#include<fstream>
#include<string>
#define MAXQSIZE 100
#define OK 1
#define error 0
#define OVERFLOW -2
using namespace std;

typedef struct{
    char name[20];
    char sex;
}Person;


typedef struct{
    Person *base;
    int front;
    int rear;
}SqQueue;

SqQueue Mdancers, Fdabcers;

int InitQueue(SqQueue &Q) {
    Q.base = new Person[MAXQSIZE];
    if(!Q.base)
        exit(OVERFLOW);
    Q.front = Q.rear = 0;
    return OK; 
}

int EnQueue(SqQueue &Q,Person e){
    if((Q.rear + 1) % MAXQSIZE == Q.front)
        return error;
    Q.base[Q.rear] = e;
    Q.rear=(Q.rear + 1) % MAXQSIZE;
    return OK; 
}


int DeQueue(SqQueue &Q,Person &e)
{
    if(Q.front == Q.rear)
        return error;
    e=Q.base[Q.front];
    Q.front = (Q.front + 1) % MAXQSIZE;
    return OK;
}

Person GetHead(SqQueue Q) {
    if(Q.front != Q.rear)
        return Q.base[Q.front];
}



void DancePartner(Person dancer[],int num){
    InitQueue(Mdancers);
    InitQueue(Fdancers);
    Person p;
    for(int i = 0 ; i < num; i++)
    {
        p = dancer[i];
        if(p.sex == 'F')
            EnQueue(Fdancers,p);
        else
            EnQueue(Mdancers,p);
    }
    cout << "舞伴配对名单:" << endl;
    cout << "  女      男"<< endl;
    while(Fdancers.front != Fdancers.rear && Mdancers.front != Mdancers.rear){
        DeQueue(Fdancers,p);
        cout << p.name <<" ";
        DeQueue(Mdancers, p);
        cout << p.name<<endl;
    }
    if(Fdancers.front != Fdancers.rear){
        p = GetHead(Fdancers);
        cout << "下一场第一位男士的舞伴是: "<< endl;
        cout << p.name << endl;
    }else if(Mdancers.front != Mdancers.rear){
        p = GetHead(Mdancers);
        cout << "下一场第一位女士的舞伴是: "<< p.name << endl;
    }
}

int main(){
    Person dancer[18]={{"金城武",'M'},{"吴彦祖",'M'},{"刘亦菲",'F'}.{"王思聪",'M'},{"高圆圆",'F'},{"王冰冰",'F'},{"许丹丹",'F'},{"古天乐",'M'},{"周杰伦",'M'},{"李荣浩",'M'},{"刘德华",'M'},{"冉小熙",'F'},{"谢春梅",'F'},{"胡思琪",'F'},{"蒋雅琪",'F'},{"马小云",'M'},{"张智霖",'M'},{"王力宏",'M'}};
    DancePartner(dancer,18);
}

仅供参考:

//舞会上,男士们(m人)和女士们(n人, n<m)进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。
//男队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。在第t首曲子时,第x个女生和第几个男生配对跳舞?
#include <stdio.h>
#include <string.h>
#define MAX 26
int m,n,t,x,y,i,j,k;
char md[MAX];
char nd[MAX];
char c;
void main() {
    while (1) {
        printf("Input n m(1<=n<m<=%d):",MAX);
        fflush(stdout);
        rewind(stdin);
        if (2==scanf("%d%d",&n,&m)) {
            if (1<=n && n<m && m<=MAX) break;
        }
    }
    while (1) {
        printf("Input t x(1<=t<=%d 1<=x<=%d):",MAX,n);
        fflush(stdout);
        rewind(stdin);
        if (2==scanf("%d%d",&t,&x)) {
            if (1<=t && t<=MAX && 1<=x && x<=n) break;
        }
    }
    for (i=0;i<m;i++) md[i]='A'+i;
    for (i=0;i<n;i++) nd[i]='a'+i;
    k=0;
    for (i=0;i<t;i++) {
        printf("%2d: ",i+1);
        for (j=0;j<n;j++) {
            c=' ';
            if (i==t-1 && j==x-1) {c='*';y=k+1;}
            printf("%c%c%c",md[k],nd[j],c);
            k=(k+1)%m;
        }
        printf("\n");
    }
    printf("%d\n",y);

}