classChild{intno;ChildnextChild=null;//?这个Child类型有什么作用,是不是和new一个Child作用一样呢,作用是不是就是储存一个Child实例的值呢?还是地址?publicChild(intindex){th...
class Child{
int no;
Child nextChild=null; //?这个Child类型有什么作用,是不是和new一个Child作用一样呢,作用是不是就是储存一个Child实例的值呢?还是地址?
public Child(int index)
{ this.no=index; } }
class CycLink{
Child firstChild=null;//指向第一个人
Child temp=null;//跑龙套 ???这里定义的Child temp是储存地址用的,还是储存int数值用的?Child类型和int类型的区别是什么?
int len=0;//表示多少个人
int k=0;//从第几个人开始数数
int m=0;//数几下
//设置链表大小
public void setLen(int len) //这个明白设置一个方法接受len的长度
{
this.len=len;
}
public void setK(int K) //设置一个方法接受K的值
{
this.k=K;
}
public void setM(int M) //设置一个方法接受M的值
{
this.m=M;
}
//设置环形链表
public void createLink()
{
for(int i=1;i<=len;i++)
{
if(i==1)
{
//创建第一个人
Child ch=new Child(i); //创建第一个人i=1然后把这个地址 付给ch这个变量对吧
this.firstChild=ch; //又把ch内存的Child(1)的地址给了firstChild对吧
this.temp=ch; //又把ch内存储的Child(1)也就是int no=1的地址,给了temp对吧
}else
{
//创建最后一个人
if(i==len)
{
Child ch=new Child(i); //?创建Child(len)然后地址付给ch对吧,那不就把之前的ch内的值给抹掉了吗?
temp.nextChild=ch; //?为什么要把最后一个数的地址付给nextChild呢?直接付给firstChild不行吗?
temp=ch; //又把Ch的地址给temp了吗,这不有把之前的给抹掉了吗,temp刚才付的值还没用到就被改写了,那它有什么作用呢?
temp.nextChild=this.firstChild; //这个可以理解把1给nextChild了,对吧
}else
{
//继续创建
Child ch=new Child(i);
temp.nextChild=ch; //这里ch储存的不就是刚创建的new Child(i)的数吗?nextChild不应该储存i+1的数吗?
temp=ch; //这个又被ch的新值覆盖了?之前给temp付的值不都没用了吗?
}
}
}
}
//打印链表
public void show(){
Child temp=this.firstChild;//跑龙套
System.out.print("人数编号:");
do{
System.out.print(" "+temp.no);
temp=temp.nextChild;
}while(temp!=this.firstChild);
System.out.println();
}
//开始play
public void play()
{
Child temp=this.firstChild;
//1.找到开始数数的人
for(int i=1;i
{
temp=temp.nextChild;//??这个什么意思,不停的把next的值给temp k-1次?在这个循环中nextChild的值会变吗?循环数i和nextChild的值有关系吗?
}
展开