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 }