#include<stdio.h>
#define queuesize 100
typedef struct //定义结构体
{
char name[20];
char queen;
} 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)//判断队列是否为空,为空返回1,否则返回0//
{
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.queen=='y')//乙的进队列//
{
enqueue(&femaledancer,p);
printf("%s进乙队\n",p.name);
}
else//甲的进队列//
{
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");
}
void main()
{
datatype p,dancers[queuesize];
int i,num;
printf("输入甲乙对的总人数:\n");
scanf("%d",&num);
printf("输入姓名和队伍,如: \n张三\n\n");
printf("*******************************************\n");
for(i=0;i<num;i++)
{
scanf("%s",&dancers[i].name);
getchar();
scanf("%c",&dancers[i].queen);
if(dancers[i].queen!='y'&&dancers[i].queen!='j')//判断输入信息是否合法//
printf("第%d个人的信息有误,请重新输入",i--);
}
dancepartners(&dancers[0],num);
getchar();
}
2018-05-18实验二第二个实验
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 【蝴蝶效应】 蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶...