题目如下:(主要是想请教为什么用链表的方式不能解决问题,并不是想解决这条题,所以大家不要讲其它的方式)
有10000个人,按1、2、1、2的顺序排,数1的站出来离开队,2的排回原队,并在次数1、2、1、2的顺序报数,同样1的离队,2的留下,如此类推,到最后留下来的号码是多少?
public class Mylist {
public Mylist(){
Linknode head=new Linknode(1,null);
Linknode current=head;
for(int i=2;i<=10000;i++){
Linknode temp=new Linknode(i,null);
current.nextnode=temp;
current.origin=i;
System.out.println("head.origin="+head.origin+" head.nextnode.origin="+head.nextnode.origin);
System.out.println("current.origin="+current.origin+" current.nextnode.origin="+current.nextnode.origin);
}
current.nextnode=head;//到这一步为止,下面这个while语句没执行,为什么?
while(head!=head.nextnode){
head=head.nextnode;
head.nextnode=head.nextnode.nextnode;
}
}
private class Linknode{
private int origin;
private Linknode nextnode;
Linknode(){
}
}
Linknode(int number,Linknode node){
this.origin=number;
this.nextnode=node;
}
Linknode get_nextnode(){
return this.nextnode;
}
void set_nextnode(Linknode node){
this.nextnode=node;
}
}
}
------解决方案--------------------