循环链表(约瑟夫环)思路及实现

循环链表

单链表的尾节点指向首节点,即可构成循环链表

约瑟夫环

约瑟夫问题:有 N 个人围成一圈,每个人都有一个编号,编号由入圈的顺序决定,第一个入圈的人编号为 1,最后一个为 N,从第 K (1<=K<=N)个人开始报数,数到 M (1<=M<=N)的人将出圈,然后下一个人继续从 1 开始报数,直至所有人全部出圈,求依次出圈的编号。

  • 例如N=6,M=5,K=1,被杀掉的顺序是:5,4,6,2,3,1

大致思路

  • 遍历链表找到指定位置的节点

  • 用一个front保存指定节点的前一个节点,方便删除

  • 当count==time时,删除此时正在遍历的节点,放入数组中,并将count的值初始化

  • 用一个变量loopTime记录已经出圈了几个人,当其等于length时则是最后一个节点,直接放入数组并返回数即可

代码

  

posted @   腹白  阅读(145)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示