1 / 11
文档名称:

敢死队问题课程设计报告.docx

格式:docx   大小:126KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

敢死队问题课程设计报告.docx

上传人:aisheng191 2019/9/18 文件大小:126 KB

下载得到文件列表

敢死队问题课程设计报告.docx

相关文档

文档介绍

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