舞伴问题 队列 数据结构

舞伴问题(队列)
假设在周末舞会上,男士和女士进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一个配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。 编写程序模拟上述舞伴配对问题。
【问题分析】
根据问题描述可知,新来人员将根据性别分别在队尾插入到男队或女队。排在队头的男士或女士优先出队,并与另一个队中的队头成员组成舞伴。由此可见,舞伴问题中的成员关系存在着先进先出的特点,可以采用队列这种数据结构来存储两队信息。舞伴问题中,不断有队头成员出队组成新的舞伴及新成员在队尾插入的操作,如果采用的顺序队列,由于队头元素删除后,存储空间的不可重复操作性,将导致存储空间浪费,从而造成假溢出现象的发生。根据以上分析,采用循环队列进行存储。
以下:

#include<iostream>
#include<malloc.h>
using namespace std;
#define Maxsize 100
typedef struct {
   
	char *base;
	int head,end;
}Queue;
void InitQueue(Queue &Q){
   
	//构造空队列
	Q.base = (char *)malloc(Maxsize * sizeof(char));
  • 13
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值