循环队列的应用--舞伴配对

在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别已经固定,舞会的轮数从键盘输入。试模拟解决上述舞伴配对问题。要求:从屏幕输出每一轮舞伴配对名单,如果在该轮有未配对的,能够从屏幕显示下一轮第一个出场的未配对者的姓名。

#include<stdio.h>
#include<stdlib.h>
#define MAX 10
typedef struct{
	char name[20];
	char sex;//f女 m男
}People;

typedef struct{
	 People *base;
	 int front;
	 int rear;
}SqQueue;

void Init_Queue(SqQueue &s,int n){
	s.base=(People *)malloc(MAX*sizeof(People));
	printf("输入名字和性别:\n");
	for(int i=0;i<n;i++){
		scanf("%s",&s.base[i].name);
		getchar();
		scanf("%c",&s.base[i].sex);

	}
	s.front=0;s.rear=n-1;
}

void OutQueue(SqQueue &s1,SqQueue &s2,int n1,int n2){//输出配对人员的姓名
	printf("%s ",s1.base[s1.front].name);
	printf("%c  ",s1.base[s1.front].sex);
	printf("%s ",s2.base[s2.front].name);
	printf("%c",s2.base[s2.front].sex);
	putchar('\n');
	s1.front=(s1.front+1)%n1;
	s2.front=(s2.front+1)%n2;
}


void DancePartner(SqQueue &s1,SqQueu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值