2022年舞伴问题文件 .pdf

上传人:H****o 文档编号:33401740 上传时间:2022-08-10 格式:PDF 页数:7 大小:48.65KB
返回 下载 相关 举报
2022年舞伴问题文件 .pdf_第1页
第1页 / 共7页
2022年舞伴问题文件 .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年舞伴问题文件 .pdf》由会员分享,可在线阅读,更多相关《2022年舞伴问题文件 .pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、舞伴问题(队列的实现)有 m 个男学生,n 个女学生,各排成一队(即男的排一队,女的排一队),有 s 首歌曲,这 s 首循环播放,每一首开始时,男队的第一个人与女队的第一个人配对跳舞,结束后回排到队尾继续排队。由老师决定什么时候跳舞停止。用户输入: m n s 输出 : 第几首歌曲几号男生与几号女生配对条件查询:第 N 首歌曲播放时男女配对的所有情况X 号男生于 Y 号女生配对的所有歌曲编号输出所有的可能情况代码如下:Main.c 文件#include #include #includeQueueLink.h void main() QueueLink mq,nq; ElemType me,n

2、e,a,b; int i,m,n,s; / m 男生 , n 女生,s 歌曲数int N,X,Y; char key ; printf( 分别输入男生数,女生数,歌曲数:n); scanf(%d%*c%d%*c%d,&m,&n,&s); InitQueue(&mq); InitQueue(&nq); for(i=1;i=m;i+) EnQueue(&mq,i); for(i=1;i=n;i+) EnQueue(&nq,i); do / 首先让歌曲从头到尾播放一轮,输出配对情况for(i=1;i=s;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

3、 - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - DeleteFront(&mq,&me); DeleteFront(&nq,&ne); EnQueue(&mq,me); EnQueue(&nq,ne); printf( 第%d 首歌曲 %d 号男生与 %d 号女生配对 n,i,me,ne); / 进行查询printf( 是否查询? Y/N:n); fflush(stdin); key = getchar(); while(key=Y) printf(1. 查询第 N 首歌曲的男女配对情况 n2. 查询 X 号男生与

4、 Y号女生配对的歌曲目录 n3. 查询所有可能情况 n); fflush(stdin); scanf(%c,&key); / 第一个条件查询if(key=1) printf( 输入 N:n); fflush(stdin); scanf(%d,&N); GetElem(&mq,&a);/ 记下此时排在第一个学生的号GetElem(&nq,&b); do for(i=1;i=s;i+) / 播放完一轮歌曲 DeleteFront(&mq,&me); EnQueue(&mq,me); DeleteFront(&nq,&ne); EnQueue(&nq,ne); if(i=N) printf( 第%d

5、 首歌曲 %d 号男生与 %d 号女生配对n,N,me,ne); GetElem(&mq,&me); GetElem(&nq,&ne); while( (a!=me )| (b!=ne ); / 直到与开始查找时的情况相同 / 第二个条件查询名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - else if(key = 2) printf( 输入 X Y 的值: n); fflush(stdin); scanf(%d%*c%d,&X

6、,&Y); printf(%d号男生与 %d 号女生配对跳舞的歌曲目如下:n,X,Y); GetElem(&mq,&a); GetElem(&nq,&b); do for(i=1;i=s;i+) DeleteFront(&mq,&me); DeleteFront(&nq,&ne); EnQueue(&mq,me); EnQueue(&nq,ne); if( (me=X) & (ne=Y) ) printf( 第%d 首歌曲 n,i); GetElem(&mq,&me); GetElem(&nq,&ne); while(a!=me )| (b!=ne ); / 第三个条件查询else if(ke

7、y=3)/ 查询所有可能情况 printf( 所有的可能情况如下: n); GetElem(&mq,&a); GetElem(&nq,&b); do for(i=1;irear = QL-front = (QNode*)malloc(sizeof(QNode);/ 队为空时,队头队尾指针相同,数据为空if(!QL-front ) return 0; QL-rear -next =NULL; QL-length = 0; return 1; / 在队尾插入队员e QNode* EnQueue(QueueLink *QL,ElemType e) QNode *p=NULL; p = (QNode*

8、)malloc(sizeof(QNode); if(!p) return p; p-data = e; p-next = NULL ; QL-rear-next = p; QL-rear = p; QL-length += 1; return p; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - / 删除队头元素,int DeleteFront(QueueLink *QL,ElemType *e) QNode *p; if(QL

9、-front = QL-rear ) return 0 ; / 为空p = QL-front -next ; *e = p-data ; QL-front-next = p-next ; if( p = QL-rear) QL-rear = QL-front ; free(p); return 1; / 获得队头元素并返回地址QNode* GetElem(QueueLink *QL,ElemType *e) QNode *p; p = QL-front -next ; if(QL-front = QL-rear ) return p ; / 为空*e = p-data ; return p;

10、int Destory(QueueLink *QL) ElemType elem; DeleteFront(QL,&elem); / 最后只剩下头指针free(QL-front); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - return 1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com