欢迎来到天天文库
浏览记录
ID:38700996
大小:58.50 KB
页数:6页
时间:2019-06-17
《数据结构 舞伴搭配问题完全代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#include#definequeuesize5typedefstruct//定义结构体{charname[20];//定义一个长度为20的字符串,用来表示姓名charsex;//定义一个char变量sex,用来表示性别,规定m表示男性,f表示女性}person_type;typedefstruct//定义循环队列结构体队列{person_type*qBase;//储存空间基址intfront;//头指针,若队列不空,指向队列头元
2、素intrear;//尾指针,若队列不空,指向队列尾元素的下一个位置}cir_queue;voidinit_queue(cir_queue*q)//初始化循环队列{q->qBase=(person_type*)malloc(sizeof(person_type)*queuesize);//动态创建储存空间基址if(!q->qBase)//创建失败,退出程序!{printf("动态创建失败,程序终止!");exit(-1);}q->front=q->rear=0;}/*voidtraverse_queue(cir_queue*q)//遍历输出循环队列元素{i
3、nti=q->front;while(i!=q->rear)//当头指针与尾指针相等时结束while循环{printf("%s",q->qBase[i].name);//输出元素的名字i=(i+1)%queuesize;//解决假溢出问题}}*/boolfull_queue(cir_queue*q)//判断循环队列是否为满{//当尾指针的下一个位置等于头指针时,队列为满//为满返回true,否则返回falseif((q->rear+1)%queuesize==q->front)returntrue;elsereturnfalse;}boolempty_
4、queue(cir_queue*q)//判断循环队列是否为空{//当头指针位置等于尾指针时,循环队列为空,//为空返回true,否则返回falseif(q->front==q->rear)returntrue;elsereturnfalse;}voiden_queue(cir_queue*q,person_typep)//进队函数,使p进入队列{if(full_queue(q))//判断是否为满{printf("队列已满,无法实现进队操作,程序终止!");exit(-1);}else//不满进行操作{q->qBase[q->rear]=p;q->rear=
5、(q->rear+1)%queuesize;//尾指针指向下一个位置}}person_typede_queue(cir_queue*q)//出队函数,用p返回出队值{person_typep;if(empty_queue(q))//判断是否为空{printf("队列为空,无法实现出队操作,程序终止!");exit(-1);}else//不为空进行操作{p=q->qBase[q->front];q->front=(q->front+1)%queuesize;returnp;}}intlength_queue(cir_queue*q)//求循环队列元素个数{r
6、eturnq->rear-q->front;//尾指针位置减去头指针位置即可}person_typequeue_front(cir_queue*q)//访问队头元素,并返回{if(empty_queue(q))//判断是否为空{printf("队列为空,操作失败!");exit(-1);}returnq->qBase[q->front];}voiddancepartners(cir_queuefemaledancer,cir_queuemaledancer,intlun)//舞伴配对函数{intm=length_queue(&femaledancer);/
7、/计算女队人数intn=length_queue(&maledancer);//计算男队人数for(intj=1;j<=lun;++j)//for循环表示舞会进行的轮数情况{//通过对男女队人数的比较,进行一下操作if(m>n)//女队人数多于男队,女队有剩余队员{person_typep;person_typeq;person_types;printf("------------------------");printf("第%d轮配对情况:",j);for(inti=1;i<=n;++i)//for循环实现配对操作{p=de_queue(&male
8、dancer);q=de_queue(&femaledancer)
此文档下载收益归作者所有