数据结构-约瑟夫问题-代码实例

上传人:大米 文档编号:562688278 上传时间:2023-12-10 格式:DOC 页数:12 大小:156KB
返回 下载 相关 举报
数据结构-约瑟夫问题-代码实例_第1页
第1页 / 共12页
数据结构-约瑟夫问题-代码实例_第2页
第2页 / 共12页
数据结构-约瑟夫问题-代码实例_第3页
第3页 / 共12页
数据结构-约瑟夫问题-代码实例_第4页
第4页 / 共12页
数据结构-约瑟夫问题-代码实例_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数据结构-约瑟夫问题-代码实例》由会员分享,可在线阅读,更多相关《数据结构-约瑟夫问题-代码实例(12页珍藏版)》请在金锄头文库上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date数据结构-约瑟夫问题-代码实例数据结构实验报告一一、问题描述:约瑟夫问题的一种描述是:编号为1,2,n点的n个人按顺时针方向围坐一个圈,每人持有一个密码。一开始选一个正整数作为报数上限值m,从第一个人开始从顺时针方向自1开始报数,报到m时停止。报到m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始从新从1报数,如此下去,直达所有人出列。基本要求:利用

2、单向循环链表存储结构模拟此过程,按照出列的顺序输出各人的编号。测试数据:m的初始值为20;n=7,7个人的密码依次是3,1,7,2,4,8,4,首先m的值为6(正确的出列顺序为6,1,4,7,2,3,5)二、程序设计的基本思想,原理和算法描述:采用结构体定义单链表,格式为: struct Lnode int number; int password; struct Lnode *next; Lnode,*p,*q,*head;其中number是人的排列序号,password是各人所持有的密码值,next是节点指针。Lnode是节点变量,p、q是节点,head是头指针。程序的代码:定义变量n,i

3、,m,j 输入人的数量n If n30 重新输入n值 当0ipassword 尾指针指向头指针,形成循环链表 输入初始报数上限值m 当1=jnumber 将p-password赋给m值 删除此节点 结束三、源程序及注释:#include#includestruct Lnode /*定义链表*/int number;int password;struct Lnode *next;Lnode,*p,*q,*head;int main(void)int n; /*n个人*/int i;int m; /*初始报数上限值*/int j;printf(ntt用单向循环链表测试约瑟夫环问题 - 刘辉 学号:

4、41012169:n); printf(n请测试人的数量:); /*输入测试人的数量*/scanf(%d,&n);loop:if(n30) /*检验n是否满足要求,如不满足重新输入n值*/ printf(n n is erorr!nn); printf(please enter the number of people again n:); scanf(%d,&n); goto loop; for(i=1;inext=q; p=q; printf(please enter the %d peoples password:,i); /*输入每个人所持有的密码值*/ scanf(%d,&(p-pa

5、ssword); p-number=i; p-next=head; /*形成循环链表*/ p=head; printf(please enter the number m:); scanf(%d,&m); printf(The password is:n); for (j=1;j=n;j+) /*输出各人的编号*/ for(i=1;inext); m=p-password; printf(%d ,p-number); p-number=p-next-number; /*删除报m的节点*/ p-password=p-next-password; q=p-next; p-next=p-next-next; free(q); printf(nn);四、运行输出结果:测试的数据:n为5,m的初值为7,密码:1、2、3、4、5,正确的结果应为:2、4、5、1、3。-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号