public class Text{
public static void main(String[] args) {
cyLink n1=new cyLink();
n1.setLen(10);
n1.creatLink();
n1.setK(2);
n1.setM(2);
n1.play();
}
}
class Child{
int no;
Child nextChild=null;
public Child (int no){
this.no=no;
}
}
//环形链表
class cyLink{
Child firstChild =null;
Child temp=null;
int len=9;
int k,m;
public void setLen(int len){
this.len=len;
}
public void setK(int k){
this.k=k;
}
public void setM(int m){
this.m=m;
}
public void play(){
while(this.len!=1){
temp=this.firstChild;
//找到第K个人
for(int i=1;i<k;i++){
temp=temp.nextChild;
}
//开始数数
for(int j=1;j<m;j++){
temp=temp.nextChild;
}
Child temp2=temp;
while(temp2.nextChild!=temp){
temp2=temp2.nextChild;
}
temp2.nextChild=temp.nextChild;
temp=temp.nextChild;
this.len--;
if(this.len>=2){
this.show();
System.out.println();
}else{
System.out.println(temp.no);
}
}
}
public void creatLink(){
for(int i=1;i<=len;i++){
if(i==1){
Child ch=new Child(i);
this.firstChild=ch;
this.temp=ch;
}else if(i==len){
Child ch=new Child(i);
temp.nextChild=ch;
temp=ch;
temp.nextChild=this.firstChild;
}else {
Child ch=new Child(i);
temp.nextChild=ch;
temp=ch;
}
}
}
public void show(){
Child temp3 =this.firstChild;
do{
System.out.print(temp3.no+" ");
temp3=temp3.nextChild;
}while(temp3!=this.firstChild);
}
}