4.5-4.8单向环形链表和约瑟夫问题
题目来自 尚硅谷Java数据结构与java算法(Java数据结构与算法)_哔哩哔哩_bilibili
写在前面:本文内容大致和原视频内老师的笔记内容相同,会偶尔插入自己的注释和理解,尽量会完成作业
4.5单向环形链表应用场景
Josephu (约瑟夫,约瑟夫环) 问题
Josephu问题为:设编号为1,2…n的n个人围坐一圈,约定编号为k ( 1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。
提示:用一个不带头结点的循环链表来处理Josephu问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从1开始计数,直到最后一个结点从链表中删除算法结束。

4.6单项环形链表介绍

4.7Josephu问题
约瑟夫问题的示意图(使用单项环形链表完成)

Josephu问题
Josephu问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。
提示
用一个不带头结点的循环链表来处理Josephu问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从1开始计数,直到最后一个结点从链表中删除算法结束。
约瑟夫问题-创建环形链表的思路图解

约瑟夫问题-小孩出圈的思路分析图

4.8约瑟夫问题的代码实现
写给今后忘记这题的我:那么你回想起来了吗?