舞伴问题 队列(C语言)

本文介绍了如何使用队列解决舞伴配对问题,当男士和女士分别排队时,依次配对。如果队伍长度不一致,长队的剩余者将在下一轮找到舞伴。通过算法步骤,包括初始化队列、按性别插入舞者、配对并处理剩余舞者,实现这一过程。
摘要由CSDN通过智能技术生成

问题描述
假设在周末舞会上,男士和女士进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一个配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。
问题分析
对于舞伴配对问题,先入队的男士或女士先出队配成舞伴,因此设置两个队列分别存放男士和女士入队者。输入舞者的记录根据性别来决定是进入男队还是女队。当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。此时,若某队仍有等待配对者,则输出此队列中排在队头的等待者的姓名,此人将是下一轮舞曲开始时第一个可获得舞伴的人。
算法步骤
(1)初始化man队列和woman队列
(2)循环读入舞者的名字和性别,根据性别插入man队列或woman队列
(3)如果两个队列都非空,依次输出男女舞伴
(4)如果man队列空woman队列非空,输出woman队列的队头女士姓名
(5)如果woman队列空man队列非空,输出man队列的对头男士姓名
完整代码

#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
struct person{
   
	char name[20];
	char sex[10];
};
typedef struct QNode{
   
	struct person Person;
	struct QNode * next;
}QNode, * QueuePtr;   //舞者的队列结构体 
typedef struct{
   
	QueuePtr front;
	QueuePtr rear;
}LinkQueue;
void InitQueue(LinkQueue &Q){
   
	Q.front=(QueuePtr)malloc(sizeof
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值