- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
约瑟夫斯问题
实验一:约瑟夫斯问题实验报告
问题描述
1) 问题描述
约瑟夫斯(Josephus)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个程序,按出列顺序印出各人编号。
2)基本要求
利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。
3)测试数据
m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4。m初值为6(正确的出列顺序应为6,1,4,7,2,3,5)。
需求分析
1.该程序所能实现的功能:将n个数字按照某一特定序列输出,直至全部输出为止。
2.输入的形式及输入值范围 :依次输入人数n、每个人的密码及报数上限m值。
3.输出的形式:按照报数上限m及每个人的密码依次输出每个人的编号。
4.测试数据要求:m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4。m初值为6(正确的出列顺序应为6,1,4,7,2,3,5)。
概要设计
主程序流程
获取每个人的密码,选定m的初值,调用函数,按照特定要求完成输出操作。
2.核心模块的算法伪码
主程序:
void main(void)
{
int m;
people *s;
s=GetData();
cout请输入m的初值:endl;
cinm;
DealData(s,m);
}
预编译代码:#includeiostream.h
详细设计
1.实现每个操作的伪码,重点语句加注释
(1)建立“人”的结构体
struct people
{
int data;
int num;
people *next;
};
(2)获取每个人的相关数据
people *GetData()
{
int n;
people *p1,*p2,*head;
head=NULL;
cout请输入人数:;
cinn;
cout请依次输入每个人的密码:endl;
for(int i=0;in;i++)
{
p1=new (people);
cinp1-data;
p1-num=i+1;
if(head==NULL)
{
head=p2=p1; //建立首结点
}
else
{
p2-next=p1; //中间结点
p2=p1;
}
}
if(head!=NULL)
p2-next=head;
return(head); //循环链表
}
2.函数调用关系图
Main()
void DealData(people *s,int m)
people *GetData()
五、调试分析
1. 设计与调试过程中遇到的问题分析、体会.
在调试过程中遇到了死循环的情况,自己反复看了很久也未能查找到错误,直到请同学帮忙看,才终于发现原来是一个在循环条件中,写丢了一个条件。后来回想,觉得当初自己检查的时候不够仔细,大概也有些主观思想——认为不可能出错——掺杂其中,导致有此结果。以后写程序要更认真才行。
2. 主要算法的时间
主程序:循环算法。
六、使用说明
打开此程序,点击运行,按照屏幕输出显示依次输入所需数据即可——
首先输入参与的人数;然后依次输入每个人手中的密码;最后输入m的初值,即可得到输出结果。
七、测试结果
八、附录
源程序
#includeiostream.h
struct people
{
int data;
int num;
people *next;
};
people *GetData()
{
int n;
people *p1,*p2,*head;
head=NULL;
cout请输入人数:;
cinn;
cout请依次输入每个人的密码:endl;
for(int i=0;in;i++)
{
p1=new (people);
cinp1-data;
p1-num=i+1;
if(head==NULL)
{
head=p2=p1; //建立首结点
}
else
{
p2-next=p1; //中间结点
p2=p1;
}
}
if(head!=NULL)
p2-next=head;
return(head); //循环链表
}
void DealData(people *s,int m)
{
people *p1,*p2,*q;
p
您可能关注的文档
- 131——135课知识点.ppt
- 16氨水.doc
- 17教学论文.doc
- 06信道.ppt
- 2009-2010学年计算机教学计划.doc
- 2010年化学综合模拟题二.doc
- 2012年七年级数学下学期期末综合复习检测卷人教新课标版.doc
- 2012年一年级数学期中测试题.doc
- 2011年银行从业考试《公共基础》知识点归纳2.doc
- 2011年公积金提取说明.doc
- 讲稿:深入理解“五个注重”把握进一步深化改革统筹部署以钉钉子精神抓好落实.pdf
- 副市长在2025年全市医疗工作会议上的讲话.docx
- 2025年市县处级以上党委(党组)理论学习中心组专题学习计划.docx
- 市民族宗教事务局党组书记、局长2024年度民主生活会个人对照检视发言材料.docx
- 烟草局党组书记2024年度抓基层党建工作述职报告.docx
- (汇编)学习2025年全国教育工作会议精神心得体会发言心得感悟.pdf
- 汇编学习领会在二十届中纪委四次全会上的重要讲话精神心得体会.pdf
- 在2025年镇安全生产、消防安全和生态环境保护第一次全体会议上的讲话提纲.docx
- 书记干部座谈会上的讲话+纪委全会上的讲话.pdf
- 党课:从毛泽东诗词中感悟共产党人初心使命.docx
最近下载
- 人教版七年级数学(下册)全册导学案.pdf VIP
- 2025届高考语文 信息类文本阅读读题训练(学生版+解析版).docx
- 2024年第五届美丽中国全国国家版图知识竞赛题库及答案(中小学组).doc
- 2024年福建省电力有限公司招考聘用6人(高频重点提升专题训练)附带答案含答案(综合卷).docx VIP
- wincc v70技术手册0创建过程画面中文.pdf
- 室外给水污水管网施工方案.doc VIP
- 2020 CFA L3 原版书固定收益课后习题.pdf
- 《市场营销策划:理论、实务、案例、实训》(第2版)课件 第4章 市场细分与定位策划.ppt VIP
- Lenovo-RD450X-用户手册完整-V1.0.docx
- 中华民族共同体概论课件专家版8第八讲 共奉中国与中华民族聚力发展.pptx VIP
文档评论(0)