- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Data organization curriculm project
数据结构实验报告
实验题目: 敢死队问题
专业班级: 09信管6
学生组号: 第七组
学生姓名:李健圆 张彪 李洁平 粱嘉倩 李奋飞
指导老师: 叶妙
完成时间: 5月12号
目 录
一.问题描述 3
二.基本要求 3
三.程序设计思想 3
六.源程序 6
七.调试分析 10
八.测试数据 11
九.心得体会 12
一.问题描述
有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。
排长是不愿意去的,假设排长为1号,请你设计一程序,
求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务
二.基本要求
至少采用两种不同的数据结构的方法实现
虽然题目很简单,但是要求用多种方法实现,要求知识比较全面,涉及到数组,链表,函数,指针,结构体,循环等方面的基础知识。
三.程序设计思想
这是个约瑟夫环逆问题要模拟整个过程,而且时间复杂度高达O(nm),。原问题是要求,
问题描述:n个人(编号~n),从开始报数,报到的退出,剩下的人继续从开始报数。求的编号。 公式:
X=(n-w+2)%n;若x为0的话,则从编号n开始报数;
五.程序流程图
n
y n y
y n y n
六.源程序
#include iostream
using namespace std;
typedef struct node{int data;
struct node*link;}NODE;/*定义NODE类型 */
int APre(int people)//数据处理函数——处理输入数据,计算结果
{
int *a = new int[people];//定义一个长度为people的数组
int i,p,n = 0;
for(i = 0;ipeople;i++)
a[i] = i+1;//初始化数组元素,即为每个敢死队队员依次编号
p = people;
while(p1)//计算从编号1开始报数,最后剩下的那个队员的编号
{
n = (n+5)%p;
if(n == 0)
{
p--;a[p] = 0;//若刚好整除p,则最后那位队员会被选走
}
else
{
for(i = n;ip;i++) a[i-1] = a[i];//若不整除,则编号为i的被选走
p--;
n--;
}
}
n = (people-a[0]+2)%people;//将剩下队员的编号a[0]代入公式计算出应该从哪个编号开始报数
if(n == 0) return(people);//n=0,则从编号为peopele的队员开始报数
else return(n);
}
int NLinkPre(int people)/*单链表函数 */
{
int i,m,pn,n=0;
NODE*L,*s,*r,*p,*q;
pn=people;
L=(NODE*)malloc(sizeof(NODE));/*生成 L头结点 */
L-link=NULL;
r=L;
for(i=0;ipeople;i++) /*给敢死队编号*/
{
s=(NODE*)malloc(sizeof(NODE));
p=(NODE*)malloc(sizeof(NODE));
s-data=(i+1);
r-link=s;
r=s;
}
s-link=NULL;
while(pn1)//计算从编号1开始,最后剩下的那个队员的编号
{
n=(n+5)%pn;
if(n==0) /*当整除pn时,最后那个敢死队员去执行任务*/
{
p=L;
i=1;
while(ipn)
{
p=p-link;
i++
您可能关注的文档
- 魔芋种植与产品加工项目可行性报告_完整版.doc
- 氨法脱硫及硫酸铵回收工艺可行性报告_完整版.doc
- 示范区占里综合功能区建设可行性报告_完整版.doc
- 标准化畜牧养殖场建设可行性报告_完整版.doc
- 某村生态农业观光园建设项目可行性分析报告(完整版)_完整版.doc
- 数字化轻便式轨道几何状态检测仪可行性报告_完整版.doc
- 茶可行性报告_完整版.doc
- 昌平水源保护地农业综合节水技术示范推广项目可研报告_完整版.doc
- 乌黑鸡产业化可行性报告_完整版.doc
- 道路拓宽及路灯、排水工程可行性报告_完整版.doc
- 2025年无人机低空医疗物资投放社会效益报告.docx
- 2025年再生塑料行业包装回收利用产业链重构研究.docx
- 《AI眼镜周边产品市场机遇:2025年终端销售与需求增长洞察》.docx
- 2025年坚果加工行业深加工技术突破与市场拓展策略报告.docx
- 2025年通信芯片行业技术竞争与未来趋势报告.docx
- 《2025年生鲜电商配送冷链事故分析与预防措施》.docx
- 《商业航天融资新趋势2025民营卫星企业资本涌入估值分析市场动态》.docx
- 2025年能源绿色健康行业创新技术与市场应用报告.docx
- 2025年无人机低空医疗救援通信方案分析报告.docx
- 2025年烹饪机器人行业市场集中度分析报告.docx
原创力文档


文档评论(0)