Java循环链表实现约瑟夫环(搬运)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java循环链表实现约瑟夫环(搬运)相关的知识,希望对你有一定的参考价值。

 1 public class Josephus {
 2     static class Node{
 3         int val;
 4         Node next;
 5         Node(int v){
 6             val=v;
 7             }        
 8     }//成员类,代表节点,类似于数据结构中的结构体
 9     public static void main(String[] args) {
10         int N=9;//这个表示总人数
11         int M=5;//数到几的人出列
12         Node t=new Node(1);//头节点单列出来,方便形成循环链表
13         Node x=t;
14         
15         for(int i=2;i<=N;i++)x=(x.next=new Node(i));//建立单向链表
16         x.next=t;//最后一个节点的next指向第一个节点,形成循环链表
17         System.out.println("出圈的顺序为:");
18         while(x!=x.next){
19             for(int i=1;i<M;i++)
20                 x=x.next;
21                        //此时x是将出列的节点的前一个节点
22             System.out.print(x.next.val+" ");
23             x.next=x.next.next;
24         }
25         System.out.println();
26         System.out.println("Survivors is "+x.val);    
27     }
28 }

 

以上是关于Java循环链表实现约瑟夫环(搬运)的主要内容,如果未能解决你的问题,请参考以下文章

javascript中使用循环链表实现约瑟夫环问题

循环链表实现约瑟夫环

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

使用循环链表实现约瑟夫环(围圈报数问题)

数据结构线性表循环链表之约瑟夫环

带头结点的循环链表实现约瑟夫环