私はWebberのModern Programming Languagesの問題を抱えていますが、メソッドが別のIntList yを取り、追加されるIntList xのappendメソッドを実装するのが難しいですxの後ろに。相続人JavaでIntListクラスのAppendメソッドを実装する
public class IntList {
private ConsCell start;
public IntList cons (int h) {
return new IntList(new ConsCell(h, start));
}
public int length() {
int len = 0;
ConsCell cell = start;
while (cell != null) {
len++;
cell = cell.getTail();
}
return len;
}
public IntList append(IntList y) {
ConsCell x = start;
while (x.getTail() != nil) {
x = x.getTail;
}
x = y.start;
return new IntList(x);
}
}
ConsCell
public class ConsCell {
private int head;
private ConsCell tail;
public ConsCell(int h, ConsCell t) {
head = h;
tail = t;
}
public int getHead() {
return head;
}
public ConsCell getTail() {
return tail;
}
}
のクラスだから、appendメソッドの後ろに私の思考プロセスは、あなたが最後に到達するまでに(リストを下に移動します
- である:ここではコードですこの場合、start.getTailがnullの場合)
- リストの末尾に達すると、新しいIntListをxの末尾に追加します。 は、xとyを含む新しいIntListを返す
残念ながら意図したとおりにプログラムがうまくいかなかったと誰もが私にいくつかの洞察力を与えることができれば、私は不思議でしたか?
追加メソッドで 'x.tail = y.start'にする必要がありますか?新しいIntListを返す必要はありません。ちょうどそれ自身を返します。つまり、「this」で十分です。 – Alex
@アレックスに加えて、途中で途中になっているので、 'start'ではなく' x'の位置ではなく、 'start'を返さなければなりません.... –
の組み合わせを追加しました。 – guillermop