C++舞伴问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:56:48
问题描述:一班有m个女生、n个男生(m不等于n), 举办一场舞会. 男女生分别编号坐在舞池两边的椅子上,每曲开始时, 依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴,设计一个程序模拟舞伴配对过程。
基本要求:输入男、女学生的姓名、性别,由程序自动为男女生编号,可以顺序编号,也可以随机编号,输出每曲配对情况(包括男、女生的姓名、性别和编号)
测试数据:由学生自选测试数据
提高要求:计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况。
请用C++语言来编译出来, 不要使用高级语言 我是大二的

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef int Status;
typedef int QElemType;
int boynum = 0,girlnum = 0,song_num=0; //全局变量
//-------循环队列-队列的顺序存储结构--------------//
typedef struct /* 定义结点元素结构 */
{
QElemType *data;
int front;
int rear;
}SqQueue;

//---循环队列的基本算法-----------------------//
Status InitQueue (SqQueue &Q,int num) // 构造一个空循环队列Q
{
Q.data = (QElemType *)malloc((num+1)*sizeof(QElemType));
if(!Q.data)
{
exit(-1);
}
Q.front = Q.rear = 0;
return 1;
}

Status EnQueue (SqQueue &Q,QElemType e,int num) // 入队列,插入元素e为Q的新的队尾元素
{
if((Q.rear+1)%(num+1) == Q.front)
return 0; //队列满
Q.data[Q.rear] = e;
Q.rear = (Q.rear+1)%(num+1);
return 1;
}
Status DeQueue(SqQueue &Q,QElemType &e,int num) // 若队列不空,则删除Q的对头元素,用e返回其值,并返回OK/,否则返回ERROR
{

if(Q.front==Q.r