java初学者,大家不要见笑,看韩顺平老师教程,关于约瑟夫和链表问题完全想不明白请高手指点,谢谢!
//初始化环形链表publicvoidcreateLink(){for(inti=1;i<=len;i++){if(i==1){//创建第一个小孩Childch=newC...
//初始化环形链表
public void createLink()
{
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);//这里ch里储存的是什么,是不是就是i那个数
temp.nextchild=ch;//
请问这里nextchild为什么要被赋予ch,为什么不是下一个数i+1呢,是这个数本身怎么还叫next?
temp=ch;
}
}
}
}
看了韩顺平老师的视频教程自学了一点java,看到这个约瑟夫环和链表的时候实在搞不懂,他的逻辑关系,想了两天也弄不明白。请高手给讲解一下,初学者希望说的详细一点浅一点,谢谢。 展开
public void createLink()
{
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);//这里ch里储存的是什么,是不是就是i那个数
temp.nextchild=ch;//
请问这里nextchild为什么要被赋予ch,为什么不是下一个数i+1呢,是这个数本身怎么还叫next?
temp=ch;
}
}
}
}
看了韩顺平老师的视频教程自学了一点java,看到这个约瑟夫环和链表的时候实在搞不懂,他的逻辑关系,想了两天也弄不明白。请高手给讲解一下,初学者希望说的详细一点浅一点,谢谢。 展开
展开全部
public void createLink()
{
for(int i=1;i<=len;i++)
{
if(i==1){
//创建第一个小孩
Child ch=new Child(i);
this.firstChild=ch;
this.temp=ch;这里不是一会一变的,这里只会调用一次,就是创建第一个小孩的时候,此时的temp是第一个小孩
}else
{
//创建最后一个小孩
if(i==len)
{
//继续创建小孩
Child ch=new Child(i);//这里创建最后一个小孩
temp.nextchild=ch;temp指代的总是前一个小孩,这里是倒数第二个,这句的意思就是将倒数第二个小孩的下一个小孩赋值为最后一个小孩
temp=ch;这里temp变成最后一个小孩了
temp.nextchild=this.firstChild;这里将最后一个小孩的下一个赋值为第一个小孩,一个圆圈就组成了
}
else
{
//创建完第一个小孩之后看这里!!!!
Child ch=new Child(i);//i应该是小孩的编号,假如我们这里创建的是第2个小孩那么此时temp就是第一个小孩
temp.nextchild=ch;//第一个小孩的下一个小孩是刚刚创建的第2个小孩
temp=ch;//这句很关键,此时又把当前创建的第二个小孩赋给temp,当进入下一次循环的时候继续用,也就是说temp指代的总是当前创建的这个小孩的前一个,也就是第i-1个小孩
}
}
}
}
{
for(int i=1;i<=len;i++)
{
if(i==1){
//创建第一个小孩
Child ch=new Child(i);
this.firstChild=ch;
this.temp=ch;这里不是一会一变的,这里只会调用一次,就是创建第一个小孩的时候,此时的temp是第一个小孩
}else
{
//创建最后一个小孩
if(i==len)
{
//继续创建小孩
Child ch=new Child(i);//这里创建最后一个小孩
temp.nextchild=ch;temp指代的总是前一个小孩,这里是倒数第二个,这句的意思就是将倒数第二个小孩的下一个小孩赋值为最后一个小孩
temp=ch;这里temp变成最后一个小孩了
temp.nextchild=this.firstChild;这里将最后一个小孩的下一个赋值为第一个小孩,一个圆圈就组成了
}
else
{
//创建完第一个小孩之后看这里!!!!
Child ch=new Child(i);//i应该是小孩的编号,假如我们这里创建的是第2个小孩那么此时temp就是第一个小孩
temp.nextchild=ch;//第一个小孩的下一个小孩是刚刚创建的第2个小孩
temp=ch;//这句很关键,此时又把当前创建的第二个小孩赋给temp,当进入下一次循环的时候继续用,也就是说temp指代的总是当前创建的这个小孩的前一个,也就是第i-1个小孩
}
}
}
}
追问
谢谢 非常感谢 你的认真答复 很有帮助!!
展开全部
1. //这里ch里储存的是什么,是不是就是i那个数
你可以把ch完全视为一个对象,里面储存的什么在这个例子里对你不重要,只要知道,new child(0)和 child(1) 是两个不同的对象就行
2. //这个指针一会一变的能有什么用呢?总被赋予不同的值,它的作用是什么呢?
temp 是一个中间量,因为每次i=i+1后 ch都被重新赋值,我们就用temp来暂时存储前一个ch。
3. 请问这里nextchild为什么要被赋予ch,为什么不是下一个数i+1呢,是这个数本身怎么还叫next?
其实已经是next了,因为for循环,每次的i都是前次的i+1
你可以把ch完全视为一个对象,里面储存的什么在这个例子里对你不重要,只要知道,new child(0)和 child(1) 是两个不同的对象就行
2. //这个指针一会一变的能有什么用呢?总被赋予不同的值,它的作用是什么呢?
temp 是一个中间量,因为每次i=i+1后 ch都被重新赋值,我们就用temp来暂时存储前一个ch。
3. 请问这里nextchild为什么要被赋予ch,为什么不是下一个数i+1呢,是这个数本身怎么还叫next?
其实已经是next了,因为for循环,每次的i都是前次的i+1
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你看看C语言的指针就会很好理解了,都是一个道理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询