Joseph's ring is an application of mathematics: n people (represented by numbers 1, 2, 3... n) are known to be sitting around a round table. The number of people numbered k starts to report, and the person counting m is listed; the next person reporting the number from 1, and the person counting m is listed again; repeat this rule, until all the people around the Round Table are listed.
We use a program to implement Joseph's ring:
Import java. util. collections;
Public class Joseph PHUs {
Private static class Node {
Public int no; // number
Public Node next; // The next Node
Public Node (int no ){
This. no = no
}
}
Public static void main (String [] args ){
Required bytes = new bytes (System. in );
System. out. print ('out. print ("Enter the total number of people :");
Int totalNum = response. nextInt );
System. out. print ("Enter the report size :");
Int cycleNum = canner. nextInt ();
Node heade = new Node (1 );
Node pointer = heade;
For (int I = 2; I <= totalNum; I ++ ){
Pointer. next = new Node (I );
Pointer = pointer. next;
}
Pointer = pointer. next;
Pointer. next = header;
// Initialize the ring linked list.
System. out. p: Intln ("out. println (" The following is the sequence of columns :')'
While (pointer !, Pointer. next ){
For (int I = 1;: <cycleNum; I ++)
Pointer = pointer. next;
}
System. out. prlntln (pointer. next. no) out. println (pointer. next. no );
Pointer. next = pointer. next. next;
}
System. out. println (pointer. next. no );
}
}