【数据结构】队列的应用-舞伴配对问题

舞会的舞伴配对问题:

某单位举办周末友谊舞会,在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数已经固定,舞会的轮数表示舞曲数。试模拟解决上述舞伴配对问题。

核心代码:

void PartnerPairing(CQueue &Qm,CQueue &Qw,int Rotation){
    int n,m,Min;
    m=(Qm.Rear-Qm.Front+Maxn)%Maxn;
    n=(Qw.Rear-Qw.Front+Maxn)%Maxn;
    printf("%d  %d\n",n,m);
    Min=m"<n?GetHead(Qm,dancer):GetHead(Qw,dancer);
        cout<<"Next Round Dancer : " <

完整的调试代码:

#include
#include
#include
#include
#include
#define Maxn 100
#define QueueSize 100
using namespace std;
typedef struct QElemType{
    string name;
    int age ;
    QElemType(string t="Bin",int Age=20){
        name=t;age=Age;
    }
}QElemType;
typedef struct {
    QElemType *base;
    int Front ,Rear;
}CQueue;
void InitQueue(CQueue &Q){
    Q.base = new QElemType [ QueueSize ];
    Q.Front = Q.Rear = 0;
}
void EnQueue(CQueue &Q,QElemType e){
    Q.base[Q.Rear]=e;
    Q.Rear=(Q.Rear+1)%Maxn;
}
void DeQueue(CQueue &Q,QElemType &e){
    if(Q.Front==Q.Rear){
        printf("error !!! Queue is empty !!!\n");return ;
    }
    e=Q.base[Q.Front++];
    Q.Front=Q.Front%Maxn;
}
void GetHead(CQueue &Q,QElemType &e){
    if(Q.Front==Q.Rear){
        printf("error !!! Queue is empty !!!\n");return ;
    }
    e=Q.base[Q.Front];
}
void PartnerPairing(CQueue &Qm,CQueue &Qw,int Rotation){
    int n,m,Min;
    m=(Qm.Rear-Qm.Front+Maxn)%Maxn;
    n=(Qw.Rear-Qw.Front+Maxn)%Maxn;
    printf("%d  %d\n",n,m);
    Min=m"<n?GetHead(Qm,dancer):GetHead(Qw,dancer);
        cout<<"Next Round Dancer : " <>n>>m;
    printf("请输入%d位男舞者的名字和年龄\n",n);
    for(int i=0;i>man.name>>man.age;
        EnQueue(Qm,man);
    }
    printf("请输入%d位女舞者的名字和年龄",m);
    for(int i=0;i>woman.name>>woman.age;
        EnQueue(Qw,woman);
    }
    printf("请输入需要多少轮舞会: ");
    scanf("%d",&Rotation);
    PartnerPairing(Qm,Qw,Rotation);
    return 0;
}

 

你可能感兴趣的:(数据结构)