#include <stdio.h>
#define max 10
typedef struct {
int data[max];
int front;
int rear;
}Queue;
void InitQueue(Queue &Q)
{
Q.front=0;
Q.rear=0;
}
int DeQueue (Queue &Q,int &x,int num)
{
x=Q.data[Q.front];
Q.front=(Q.front+1)%num;
return x;
}
void EnQueue(Queue &Q,int &x,int num)
{
Q.data[Q.rear]=x;
Q.rear=(Q.rear+1)%num;
}
int getelem (Queue &Q)
{
return Q.data[Q.front];
}
void partner (Queue &Q1,Queue &Q2)
{
InitQueue (Q1);InitQueue (Q2);
int i,m,n,num;
int k,l,a,b;
int j;
printf ("输入男生数:\n");
scanf ("%d",&n);
printf ("输入男生名字(例如:1):\n");
for (i=0;i<n;i++)
{
scanf ("%d",&num);
EnQueue (Q1,num,n);
}
printf ("输入女生数:\n");
scanf ("%d",&m);
printf ("输入女生名字(例如:1):\n");
for (i=0;i<m;i++)
{
scanf ("%d",&num);
EnQueue (Q2,num,m);
}
k=m<n?m:n;
printf ("输入跳舞轮数:\n");
scanf ("%d",&l);
i=1;
for(j=0;j<l;j++)
{
printf ("第%d轮配对:\n",j+1);
while ((i%k)!=0)
{
//DeQueue (Q1,a);
//DeQueue (Q2,b);
printf ("%d---%d\n",DeQueue(Q1,a,n),DeQueue(Q2,b,m));
i++;
}
printf ("%d---%d\n",DeQueue(Q1,a,n),DeQueue(Q2,b,m));
i++;
printf ("下一轮第一个配对的是\n");
printf ("%d %d\n",getelem (Q1),getelem (Q2));
printf ("%d\n",getelem(Q1));
}
}
int main ()
{
Queue Q1,Q2;
partner (Q1,Q2);
return 0;
}
队列实现舞伴配对
最新推荐文章于 2023-04-20 21:21:52 发布