循环单链表实现约瑟夫环问题

本文介绍如何利用单向循环链表解决约瑟夫环问题。当报数到m时,该人出列,其密码作为新的m值,继续报数,直至所有人都出列。例如,m=6,n=7,编号和密码为[3, 1, 7, 2, 4, 8, 4],输出序列为[6, 1, 4, 7, 2, 3, 5]。通过实践,作者意识到自己在链表操作上的不足并计划进行总结。" 78686048,6975261,VSCode使用Debugger for Chrome调试JS与HTML交互,"['前端开发', 'VSCode', '调试工具', 'JavaScript', 'HTML']
摘要由CSDN通过智能技术生成

问题:

编号为1,2,3,,,n的n个人按顺时针围坐一起,每人有一个正整数密码。一开始任选一个整数作为报数上限值m,从第一个人开始按顺时针向自1开始顺序报数,报到m的停止,出列,并把出列的人手中的密码作为新的m值,从接下来的下一个人接着从一开始报数,依次所有人出列

利用单向循环链表实现,按照数列的顺序的打印个人的编号

例如,m=6;

n=7;

7个人的密码分别为 3 1 7 2 4 8 4

输出为: 6 1 4 7 2 3 5

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这题其实也不是那么难的,只是自己想练习下无结节点的,单向循环链表,然后。。。。

好吧,不过自己还是认识到许多自己的不足的。

需要好好总结下

思路:首先我们要走m步,找到要出列的那个人,不过在找的同时,我们要记住前面那个人(如果对于编号4的人来说,编号3,2,1就是他前面的人,哈哈,语文不好,可能会搞混前面 后面的含义),因为出列的那个人要被delete,它后面的人和前面的人你要想办法连起来啊

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值