学生搭配的问题

上传人:夏** 文档编号:470171962 上传时间:2023-12-02 格式:DOC 页数:7 大小:145.50KB
返回 下载 相关 举报
学生搭配的问题_第1页
第1页 / 共7页
学生搭配的问题_第2页
第2页 / 共7页
学生搭配的问题_第3页
第3页 / 共7页
学生搭配的问题_第4页
第4页 / 共7页
学生搭配的问题_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《学生搭配的问题》由会员分享,可在线阅读,更多相关《学生搭配的问题(7页珍藏版)》请在金锄头文库上搜索。

1、中北大学数据结构课程设计说明书学生姓名:王少华学号:1021011611学院:软件学院专业:软件开发与测试题目:学生搭配的问题指导教师何志英2011年12月20日1. 设计任务概述(包括系统总体框图及功能描述)本设计所采用的数据结构(如:链表、栈、树、图等)核心问题:循环队列的应用数据模型(逻辑结构):循环队列(两个),将男生、女生两组人分别存放,以实现循环配对输出。存储结构:循环链表核心算法:循环队列的入队,出队,判队满,判队空。输入数据:男生人数、女生人数,歌曲数量输出数据:每一首歌曲播放时,男生和女生搭配情况(只输出编号即可)当要查找的男女搭配时输出歌曲编号,和他们搭配的总次数。通过以上

2、分析,该程序具有可行性。(正文宋体小四号字,1.5倍行距)功能模块详细设计3.1详细设计思想队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。循环队列是在队列的顺序存储结构中,除了用乙组地址连续的存储单元依次存放从队列头到队列尾的元素外,尚需附设两个指针front和rear分别指示队列头元素和队列尾元素的位置。循环队列(两个),将男生、女生两组人分别存放,以实现循环配对输出。循环队列的入队,出队,判队满,判队空。(1)要模拟动态地显示出现题目中所要求的循环,我们要先建立两个循环队列SqQueue禾口SqQueue2(2)将男生、女生两组人分别存入这两个队列。以实现

3、他们的循环配对输出,这是循环队列固有的特性。(3)利用循环队列的特性,将男女生分别进行入队列和出队列操作,且实现搭配输出。(4)循环队列的长度分别设为男女生的个数即可。3.2核心代码#include#include#include#include#defineMAXSIZE60#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW-1typedefintsystem;typedefstructQNode/*定义结点类型*/intnum;structQNode*next;QNode,*QueuePtr;typedefstru

4、ctQueuePtrfront;QueuePtrrear;LinkQueue;/*定义队列的前后指针*/voidsleep(clock_twait)/延迟函数clock_tgoal;goal=wait+clock();while(goalclock();voidInitQ(LinkQueue&Q)/建立空队列QueuePtrp;p=(QueuePtr)malloc(sizeof(QNode);/*给结点P申请空间*/Q.front=p;Q.rear=p;Q.front-next=NULL;voidEnQueue(LinkQueue&Q,intnum)/*给Q队列增加num个结点*/QueueP

5、trp;p=(QueuePtr)malloc(sizeof(QNode);p-num=num;p-next=NULL;Q.rear-next=p;Q.rear=p;voidDeQueue(LinkQueue&Q,int&num)/*删除结点函数*/QueuePtrp,q;if(Q.front=Q.rear)printf(队列为空);p=Q.front-next;num=p-num;Q.front-next=p-next;q=p-next;if(Q.rear=q)Q.rear=Q.front;free(p);/*释放P的空间*/voidprintF(LinkQueue&F,inti)/打印第iQ

6、ueuePtrp;intn=1;while(nnext;while(F.rear!=p)printf(%d,p-num);p=p-next;printf(%dn,p-num);voidprintM(LinkQueue&M,inti)/打印第iQueuePtrp;intn=1;while(nnext;while(M.rear!=p)printf(%d,p-num);p=p-next;printf(%dn,p-num);voidmain()intm,n,k,i,a,b;intcount=0,num;QueuePtrp,q;LinkQueueF;/女生队LinkQueueM;/男生队printf(请

7、输入女生数量:);scanf(%d,&m);printf(请输入男生数量:);scanf(%d,&n);printf(请输曲子号:);scanf(%d,&k);printf(请输入要查找的男生编号:);scanf(%d,&a);printf(请输入要查找的女生编号:);scanf(%d,&b);InitQ(F);InitQ(M);for(i=1;i=m;i+)EnQueue(F,i);for(i=1;i=n;i+)EnQueue(M,i);for(i=1;inext;q=M.front-next;printf(目前跳舞的是第c号女生和第d号男生n,p-num,q-num);if(p-num=a

8、&q-num=b)count+;printf(第4曲是要查找的男女生跳舞n,i);sleep(3000);DeQueue(F,num);EnQueue(F,num);DeQueue(M,num);EnQueue(M,num);printf(该对男女生共跳舞4次n,count);3.3程序运行结果(拷屏)5肉圣第2号女吨和男2号男斗2生和第M号另生m琴魏聲是第E号女筈和第1号男生23uj,A.Ja頁疲扎喪苣札吋了12345目前眺舜用弟忖该.社百US字_71a345&內至霸#上右懦2号男旺吏髒翥|Prns.11$Ik土ytocut-1夢任券书zip.-H:血回王歩华加11圭陆芒-in2)BHftH

9、icrfl.2. 课程设计心得、存在问题及解决方法通过一周的学习和实践,解决实际问题(学生搭配问题),让我对循环队列有了更深的了解,对数据结构产生了浓厚的兴趣,同时也让我提高了解决实际问题的能力。我们要不断的通过上机来提高自己的学习水平,在上机的同时改正了自己对某些算法的错误使用,使自己在通过程序解决问题时抓住关键算法,有了算法设计思想和流程图,并用c语言描绘出关键算法。以前我对数据结构(C语言描述)的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。让自己有一定的能力去改正一些常见的错误语法,很高兴这一周

10、的学习让我对数据结构(C语言描述)有了新的认识,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。在这次课程设计的实验中,我收获了许多知识,通过查找大量资料,请教老师,以及不懈的努力,也培养了独立思考、动手操作的能力。我也学会了许多学习和解决实际问题的方法,让我受益匪浅。时间的紧缺成为一个很大的问题。也希望老师可以为我们知道一下以后的发展方向。如果可以让每个人都有动手焊接以及参与其他的各个流程,有专门的知道就更好了。课程设计对我来说,趣味性强,不仅锻炼能力,而且可以学到很多东西,在与老师和同学的交流过程中,互动学习,将知识融会贯通,也增强了我和同学之间的团队合作的能力。让我们知

11、道只要努力,集中精力解决问题,一定会有收获的,过程也是很重要的。在这次课程设计中我们要学会利用时间,在规定的时间内完成我们的任务,要逐渐养成用C语言编写程序的良好习惯。这些对我来说都是一种锻炼,一个知识积累的过程,一种能力的提高。要打好基础,才能用更好的办法,更简洁明了的程序解决实际问题,只有这样才能进一步的取得更好的成绩。我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它,增进它。虽然我现在的水平还很差,但我还会继续努力的,在解决实际问题时如果遇到了难题,我们要学会去查找大量的有关这方面的资料,还要借助于网络不断扩大自己的知识面和阅读量。这样也可以锻炼我们的自主学习能力和解决问题的能力,学到了许多以前没学到的东西。在课程设计中的程序都比较复杂,所以需要我们要更加地细心,认真的完成每一步的操作,修改语法,按照老师的指导思想来完成。与此同时也让我们增加了对程序和算法进一步理解。总之,我学到了很多东西,很感谢学校给我们这样一次锻炼自我的机会,也很感谢老师的指导。

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

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号