约瑟夫环问题单项循环链表模拟的设计思路 !设计思路!设计思路!

谁告诉我约瑟夫环的设计思路啊_百度知道
谁告诉我约瑟夫环的设计思路啊
谁告诉我约瑟夫环的设计思路,要详细一点的啊
我有更好的答案
看看百度百科吧,呵呵
采纳率:30%
这是我写的
不懂就问 我写的很有特色的方法就是先采用一个大数组放任的编号 1,2,3,4,5,6,7,8,9,10,1,2,3等等然后,从开始第一个数每隔三个人取数,每取一次数后,就省掉当前数之后的所有相同的数,然后隔3个取一个数 直到取得数的个数为人的个数和 。总的方法就是多多采用stl呵呵
约瑟夫环: 约瑟夫环问题的一种描述是:编号为1.2.3…….n的n个人按顺时针方向围坐一圈 ,每人手持一个密码(正整数),开始任意选一个整数作为报数上限值,从第一 个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密 码作为新的m值,从他顺时针下一个人开始重新从1开始报数,如此下去直到所有 的人全部都出列为止。试设计程序实现。 要求:利用循环链表存储结构模拟此过程,按照出列的顺序打印各人的编号。 测试数据:m的值初始为20:密码3 ,1,7,2,4,8,4。 正确的结果:6,1,4,7,2,3,5。 提示:程序运行后首先要求用户指定初始报数上限。然后读取各人的密码。设 n&30。 typedef struct node { int num, struct node * } void main() { int i,j,key,n; /*i,j为记数器,key为输入的密码,n为人的总个数*/ lnode *p,*s,* head=(lnode *)malloc(sizeof(lnode)); /*为头结点分配空间*/ p= printf(&Please enter the num of the person:&); /*输入人的总个数*/ scanf(&%d&,&n); for(i=1;i&=n;i++) { printf(&Person %d&,i); printf(& code: &); scanf(&%d&,&key); /*输入各个人的密码*/ s=p; p=(lnode *)malloc(sizeof(lnode)); /*创建新的结点*/ s-&next=p; p-&num=i; p-&code= } p-&next=head-& p= head=head-& free(p); p= do { printf(&\nPerson%d Code:%d&,p-&num,p-&code); /*输出链表*/ p=p-& }while(p!=head); printf(&\nPlease enter your first key:&); /*输入第一个数*/ scanf(&%d&,&key); do { j=1; /*j为记数数*/ p= while(j&key) { s=p; p=p-& j++; } i=p-& key=p-& printf(&\nThe out of the num:&); printf(&Person%d&,i); s-&next=p-& head=p-& /*重新定义head,下次循环的开始结点*/ free(p); n--; /*每循环一次人是减1*/ }while(n&0); getch(); }
为您推荐:
其他类似问题
约瑟夫环的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。基于单向循环链表的约瑟夫环设计_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于单向循环链表的约瑟夫环设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩22页未读,
定制HR最喜欢的简历
你可能喜欢C&&循环链表之约瑟夫环的实现方法
这篇文章主要介绍了C++循环链表之约瑟夫环的实现方法,对于学习数据结构与算法有一定的借鉴价值,需要的朋友可以参考下
本文实例形式展示了C++实现循环链表中约瑟夫环的方法,分享给大家供大家参考之用。具体方法如下:
主要功能代码如下:
#include &iostream&
typedef struct student
struct student*
}node,*LinkL
//约瑟夫环
void printfList(LinkList head){
LinkList p=
if (head!=NULL)
cout&&p-&data&&" ";
}while(p!=head);//这里出现过问题,用do-while
void Josephus(int n,int k,int m){
LinkList head=(LinkList)malloc(sizeof(node));
head-&next=
head-&data=1;
LinkList pre=
while(i&=n){
LinkList p=(LinkList)malloc(sizeof(node));
p-&data=i;
p-&next=pre-&
pre-&next=p;
printfList(head);
LinkList mend=
while(kk!=k){
mend=mend-&
}//找到k个开始
while(n--){//要全部输出
pre=//每次都要给pre从新复值否则程序错误
while(mm!=m){//不是要求的数,指针每次往前推一步,mend指向报数的人,pre指向前一个
mend=mend-&
pre-&next=mend-&//前一个链到下一个准备报数的
cout&&mend-&data&&
LinkList deletem=
mend=pre-&//mend指向报数的人;
free(deletem); //最后删除
int main(){
Josephus(13,4,1);
希望本文所述对大家的C++程序设计有所帮助。
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.038 (s). 13 q(s)豆丁微信公众号
君,已阅读到文档的结尾了呢~~
单向循环链表 约瑟夫环 循环链表 约瑟夫环问题 约瑟夫环java 双向循环链表 约瑟夫环 数组 约瑟夫环实验报告
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于单向循环链表的约瑟夫环设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口约瑟夫环问题课程设计报告_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
约瑟夫环问题课程设计报告
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩19页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 约瑟夫环公式 的文章

 

随机推荐