题目描述:
dcatenate(IntList A, IntList B)
:返回一个由A的所有元素组成的列表,后面是B的所有元素。可能会修改A。Don't use 'new'。
public static IntList dcatenate(IntList A, IntList B) { if(A == null){ return B; } IntList ptr = A; while(ptr.rest != null){ ptr = ptr.rest; } ptr.rest = B; return A; }
与其类似:
public static void dSquareList(IntList L) { while (L != null) { L.first = L.first * L.first; L = L.rest; } }
这段代码定义了一个静态方法 `dSquareList`,它接受一个 `IntList` 类型的参数 `L`。该方法首先检查参数 `L` 是否为 `null`,如果不是,就将 `L.first` 的值替换为其自身的平方,然后将 `L` 指向下一个元素 `L.rest`。循环会一直执行,直到 `L` 变成 `null` 为止。
在主程序中,首先创建一个 `IntList` 类型的变量 `origL`,它包含三个整数元素 1、2 和 3。然后调用 `dSquareList` 方法,将 `origL` 作为参数传递给它。该方法会修改 `origL` 的元素值,将它们变成 1、4 和 9。因为 `origL` 是一个对象,而不是基本类型的值,所以在 `dSquareList` 方法中修改 `L` 的同时也修改了 `origL`。
需要注意的是,该方法没有返回值,而是直接修改了输入的参数 `L`。如果需要保留原始列表的副本,则需要在调用该方法之前先进行复制。
标签:CS61B,rest,origL,lab02,IntList,dSquareList,null,ptr From: https://www.cnblogs.com/xuenima/p/17372286.html