IntList 学习,构造两个函数,功能是将两个IntList联结起来,区别是一个是改变了原来数组的值,而另一个不改变。
// 返回两个连接的数组,改变了原来数组的值(destructive)
public static IntList dcatenate(IntList A, IntList B) { //TODO: fill in method
//创建一个P列表,始终指向列表的头,并直接将A列表赋给P
IntList P=A;
//改变指针的指向,让指针后移
while(A.rest!=null){
A=A.rest;
}
//循环B列表,将B列表的值循环赋给A.rest
while(B.rest!=null){
A.rest=new IntList(B.first,null);
B=B.rest;
A=A.rest;
}
//获得B列表尾部的值,并返回结果列表P
A.rest=new IntList(B.first,null);
return P;
}
/**
* 返回两个数组的连接,不改变原来数组的值(non-destructive)
* *
*/
public static IntList catenate(IntList A, IntList B) {
//新建一个C列表,用于做赋值的中间变量,用q列表指向列表的头部
//TODO: fill in method
IntList C=new IntList(A.first,null);
IntList q=C;
while(A.rest!=null){
A=A.rest;
C.rest=new IntList(A.first,null) ;
C= C.rest;
}
C.rest=new IntList(B.first,null);
C=C.rest;
while(B.rest!=null){
B=B.rest;
C.rest=new IntList(B.first,null);
C=C.rest;
}
return q;
}