#include<stdio.h>
#define queuesize 100
typedef struct
{
char name[20];
char sex;
} datatype;
typedef struct
{
int front;
int rear;
int count;
datatype dancers[queuesize];
} cirqueue;
void initqueue(cirqueue *q)//建立空队列//
{
q->front=q->rear=NULL;
q->count=0;
}
int queueempty(cirqueue *q)
{
return q->count==NULL;
}
void enqueue(cirqueue *q,datatype p)//进队函数,使p进入队列//
{
q->count++;
q->dancers[q->rear]=p;
q->rear=(q->rear+1)%queuesize;
}
datatype dequeue(cirqueue *q)//出队函数,用p返回出队值//
{
datatype p;
while(!queueempty(q))
{
p=q->dancers[q->front];
q->count--;
q->front=(q->front++)%queuesize;
return p;
}
}
datatype queuefront(cirqueue *q)//访问队头元素//
{
return q->dancers[q->front];
}
void dancepartners(datatype dancers[],int num)//舞伴配对函数//
{
int i;
datatype p;
cirqueue maledancer,femaledancer;//定义两个循环队列结构体//
initqueue(&maledancer);//调用initqueue()函数置空队列maledancer//
initqueue(&femaledancer);//调用initqueue()函数置空队列femaledancer//
for(i=0;i<num;i++)
{
p=dancers[i];//结构体整体赋值//
if(p.sex=='f')//女的进队列femaledancer//
{
enqueue(&femaledancer,p);
printf("%s进女队\n",p.name);
}
else//男的进队列maledancer//
{
enqueue(&maledancer,p);
printf("%s进男队\n",p.name);
}
}
printf("配对情况如下:\n");
while (!queueempty(&femaledancer)&&!queueempty(&maledancer))//当两个队列都不为空时,出队配对//
{
p=dequeue(&maledancer);
printf("男:%s",p.name);
p=dequeue(&femaledancer);
printf("和女:%s配对成功\n",p.name);
}
if(!queueempty(&femaledancer))//女队不为空,输出女队第一个等待人姓名//
{
printf("女队中还有%d个人在等待!\n",femaledancer.count);
p=queuefront(&femaledancer);
printf("女队中第一个等待的是:%s\n",p.name);
}
else if(!queueempty(&maledancer))//男队不为空,输出男队第一个等待人姓名//
{
printf("男队中还有%d个人在等待!\n",maledancer.count);
p=queuefront(&maledancer);
printf("男队中第一个等待的是:%s\n",p.name);
}
else printf("^-^没有人剩余^-^!\n");
}
main()
{
datatype p,dancers[queuesize];
int i,num;
printf("输入男女dancer的总人数:\n");
scanf("%d",&num);
printf("输入姓名和性别,如: \nzhangsan\nm\n");
for(i=0;i<num;i++)
{
scanf("%s",&dancers[i].name);
getchar();
scanf("%c",&dancers[i].sex);
if(dancers[i].sex!='f'&&dancers[i].sex!='m')//判断输入信息是否合法//
printf("第%d个人的信息有误,请重新输入",i--);
}
dancepartners(&dancers[0],n);
getchar();
}
fgr.zip_K._fgr_一班有m个女生
版权申诉
4星 · 超过85%的资源 167 浏览量
2022-09-21
08:48:08
上传
评论 3
收藏 1KB ZIP 举报
Kinonoyomeo
- 粉丝: 75
- 资源: 1万+
最新资源
- 南京邮电大学数学实验:熟练掌握 Matlab 软件的基本命令和操作
- 2017校招真题校园招聘真题算法题(37道)Python源码.zip
- 基于单片机protues仿真的多功能自动饮水机系统设计(仿真图、源代码、演示视频)
- 二叉树7-1-1.cpp
- android 9.0 原生模拟器 签名文件
- 技术面试最后反问面试官的话 校招面试非技术问题有哪些 非技术问题如何回答.png
- NB-IOT-BC26全网通模块Altium+ CADENCE +PADS三种格式(原理图SCH+PCB封装库)文件.zip
- 基于微信小程序开发的校园失物招领系统源码毕业设计(优质项目源码).zip
- 词向量是一种将自然语言中的单词转换为数值向量的技术,它能够捕捉词义和上下文信息
- nmap与masscan的简单使用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈