模拟舞伴配对算法出现了些问题,请指教
就是依次配对,这一轮没配上的下一轮先配,队列#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct Node
{
int a; //a表示序号
struct Node *next;
}LNode;
void duilie(int n,int nan,int nv);
void wuhui(int b,int n,LNode *zznan,LNode *zznv);
main()
{
int n,nan,nv;
cout<<"要进行几轮舞会:";
cin>>n; //n代表舞会轮次
cout<<"\n男队的人数为:";
cin>>nan;
cout<<"\n女队的人数为:";
cin>>nv;
cout<<endl;
duilie(n,nan,nv);
}
void duilie(int n,int nan,int nv)
{
int i,b; //b表示一轮舞会男女各出多少人
LNode *p,*q,*zznan,*zznv;
//男队的循环链表 ,以zznan为头结点
zznan=(LNode*)malloc(sizeof(LNode));
zznan->a=1;
zznan=p;
for(i=1;i<nan;i++)
{
q=(LNode*)malloc(sizeof(LNode)); //建立新节点
q->a=i+1;
p->next=q;
p=q;
}
p->next=zznan;
//女队的循环链表 ,以zznv为头节点
zznv=(LNode*)malloc(sizeof(LNode));
zznv->a=1;
zznv=p;
for(i=1;i<nv;i++)
{
q=(LNode*)malloc(sizeof(LNode)); //建立新节点
q->a=i+1;
p->next=q;
p=q;
}
p->next=zznv;
cout<<"男女循环队列构造完成"<<endl<<endl;;
if(nan<nv) b=nan;
else b=nv;
wuhui(b,n,zznan,zznv);
}
void wuhui(int b,int n,LNode *zznan,LNode *zznv)
{
int i,j;
for(i=0;i<n;i++) //轮数
{
cout<<"第"<<i+1<<"轮"<<endl;
for(j=0;j<b;j++)
{
cout<<"男队"<<zznan->a<<"号和女队"<<zznv->a<<"号"<<endl;
zznan=zznan->next;
zznv=zznv->next;
}
cout<<endl;
}
}