循环队列的应用——舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别已经固定,舞会的轮数从键盘输入。试模拟解决上述舞伴配对问题。要求:从屏幕输出每一轮舞伴配对名单,如果在该轮有未配对的,能够从屏幕显示下一轮第一个出场的未配对者的姓名。
//循环队列的常用函数
#include
#include
#define Maxsize 100
typedef struct{
int *base;
int front;
int rear;
int k; //记录初始位置
}squeue;
int a,b,i,j,n,m1,m2,m;
void Initqueue(squeue &Q)
{
Q.base=(int*)malloc(Maxsize*sizeof(int));
if (!Q.base)
exit(1);
Q.front=Q.rear=Q.k=0;
}
void Push(squeue &Q,int e)
{
if ((Q.rear+1)%Maxsize==Q.front) //队满处理
return;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%Maxsize;
}
void Pop(squeue &Q,int &e