欢迎来到天天文库
浏览记录
ID:18696324
大小:80.50 KB
页数:11页
时间:2018-09-21
《敢死队问题课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构课程设计题目:《敢死队问题》作者:***院(系):信息工程学院专业:信息管理与信息系统指导教师:***日期:2013年11月26日11/11目录第一章绪论……………………………………………………………3第二章需求分析………………………………………………………4第三章详细设计………………………………………………………4第四章调试分析………………………………………………………7第五章测试结果………………………………………………………8第六章源程序代码……………………………………………………8第七章实验总结………………………………………………………10第八章参考文献…………………………………
2、……………………1111/11第一章绪论课程设计时实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个发面,是一门独立于课程之外的独立课程。课程设计时让同学们对所学的课程更全面的学习和应用,可以理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风等方面受到比较系统和严格的训练。在这次的课程设计中我选择的题目是敢死队问题。加强版的约瑟夫环问题(用户输入
3、N,M值,从1至N开始顺序循环数数,每数到M输出该值,直到全部输出,最后输出的一个获胜),增加了保证1号安全这一条件限制。并且模拟各个开始位置,队员死亡的顺序,以及最后的获胜者。课程设计的目的的意义:加深对循环队列和数组的理解,以及对循环队列和数组的实际应用,加强自己的动手操作能力,增加对课程的兴趣,而不是枯燥的看课本。课程设计—《敢死队问题》描述有n个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战
4、士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。11/11第二章需求分析1.本程序任务是通过输入任意队伍人数n和报数上限m,输出使排长最后一个执行任务而开始记数的初始位置。首先输入队伍人数n,然后输入报数上限m(m<=n)。比如从1号开始报数,当达到报数上限时,那名士兵出列执行任务,从下个人开始记数,再次循环,直到只剩一人,得到其在队伍中的位置,记下该位置视为排长位置,则1号即可视为最先报数的人,通
5、过数学计算即可获得所求。2.功能模块和流程:1)功能模块该程序功能比较单一,主要是为解决敢死队问题而设计。通过输入队伍人数和报数上限即可获得开始报数的位置。2)程序流程(1)构造链表(2)数据输入(3)执行删除(4)输出要求数值(5)结束3.数据测试:当n=10,m=5,输出结果为:要求的位置是:9。第三章详细设计1.算法设计:本程序其实质是约瑟夫环问题。从排长位置即1号开始报数,共有n个人,达到报数上限m=5的战士出列,继续进行报数,直到剩余最后一人,记下该位置为k。若将该位置视为排长位置,则原先的1号位置即位所有的开始报数的位置z。则z=n-k+2。2.以单循环链表为存储结构,包含三个模块
6、:(1)主程序模块(2)构造链表并初始化(3)删除结点11/11开始声明类型定义变量并初始化初始化单链表循环模块输入敢死队员总数剩下的队员数>1?队员报数报数值=死亡数?队员出列输出结果否是否3.结点类型和指针类型typedefstructnode{intdata;structnode*next;}LNode;/*定义结点类型*/LNode*p;4.每个模块的分析(1)主程序模块:main(){LNode*p;intm,n,z,y;11/11do{printf("Pleaseinputthepeoplenumber:");scanf("%d",&n);}while(n<=0);do{pri
7、ntf("Pleaseinputtheexcursion:");scanf("%d",&m);}while(m<=0);if(n==1)printf("thepositionis:1");else{p=CREAT(n);y=DELETE(p,m);z=n-y+2;if(z%n==0)/*排除特殊情况*/printf("thepositionis:%d",z);elseprintf("t
此文档下载收益归作者所有