约瑟夫环(严蔚敏答案)

约瑟夫环(严蔚敏答案)

ID:13028241

大小:34.50 KB

页数:3页

时间:2018-07-20

约瑟夫环(严蔚敏答案)_第1页
约瑟夫环(严蔚敏答案)_第2页
约瑟夫环(严蔚敏答案)_第3页
资源描述:

《约瑟夫环(严蔚敏答案)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、约瑟夫游戏的大意是:每30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个人数起,数到第9人,再将他扔进大海中,如此循环地进行,直到剩下15个乘客为止。问哪些位置是将被扔下大海的位置。直到所有人全部出列。#include#include#defineOK1#defineERROR0typedefintStatus;typ

2、edefstruct{intnum;//结点编号intpassword;//结点密码}ElemType;typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;intm,n;StatusInitList_L(LinkList&L){//建立一个空的单循环链表,L为带头结点的单循环链表的头指针.__L=(LinkList)malloc(sizeof(LNode));___//生成新结点if(!L)returnERROR;___L->next=L___//生成循环链表returnOK;

3、}//InitList_LStatusListInsert_L(LinkList&L,inti,ElemTypee){//在带头结点的单循环链表L中第i个位置之后插入元素eLinkListp,s;intj;p=L;j=0;while(p->next!=L&&jnext;++j;}if(j

4、

5、j>i-1)returnERROR;//i小于1或者大于表长s=(LinkList)malloc(sizeof(LNode));//生成新结点___s->data=e;___//新结点输入信息___s->next=p-

6、>next;___//将新结点插入___p->next=s;__//将新结点插入returnOK;}//ListInsert_LvoidJoseph(LinkList&L){LinkListp,q;inti;m=m%n;//若m>n时q=L;p=L->next;while(___L->next!=L__)//只要还有结点{i=1;while(inext;___//p往后寻找if(p!=L)i++;}q->next=p->next;//第m个结点脱链___printf("%3d"

7、,p->data.num);___//输出第m个结点信息m=____p->data.password;___;//将第m个人的密码作为新的m值_____free(p);_____//删除第m个结点p=q->next;if(p==L){q=p;p=p->next;}}free(L);}intmain(){LinkListL,p;inti;int*a;ElemTypee;scanf("%d",&n);//参加n个人scanf("%d",&m);//初始第m个人出列a=(int*)malloc(n*sizeof(int));for(i=0;i

8、nf("%d",a+i);//读入n个人的密码InitList_L(L);for(i=1;i<=n;i++)////创建循环链表,表示n个人围成一圈的约瑟夫环{e.num=____i____;e.password=____*(a+i-1)___;____ListInsert_L(L,i,e);___;}Joseph(L);return0;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。