日期:2014-05-20  浏览次数:20681 次

用java对链表的算法的操作,不行,请高手指点!!
题目如下:(主要是想请教为什么用链表的方式不能解决问题,并不是想解决这条题,所以大家不要讲其它的方式)
有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;

}
}

------解决方案--------------------
探讨
不明白你的"并没有排除出链表外"这句话什么意思?为什么要排除呢?