-1

私は単純なリンクされたリスト構造にデータを保存しています.Javaのこれら2つのループの違いは何ですか? 私は最初のものはより少ないコードで2番目のものと同じことをするだろうと思っていましたが、うまくいきません。

//1
temp = list.firstElement;
while (temp != null) {
  temp = temp.nextElement;
}
temp = *data*;

//2
if (list.firstElement == null) {
  list.firstElement = *data*;
}
else {
  temp = list.firstElement;
  while (temp.nextElement != null) {
    temp = temp.nextElement;
  }
  temp.nextElement = *data*;
}

2 番目のものはリストに何かを追加するのに、最初のものは追加しないのはなぜですか? (最初の要素はまだ null です)

4

3 に答える 3

1

ちょうど temp==null のときに最初のループから脱落します。つまり、すでにリストから完全に脱落しています。

temp.nextElement==null の場合、特に temp!=null を意味する場合、2 番目のループから脱落します。これは、temp がリストの最後の要素を指していることを意味し、nextElement フィールドを正常に設定できます。

于 2013-11-04T22:55:48.653 に答える
1

最初のループでは、現在の要素が null になるまで行ってから、その値に何かを割り当てますが、誰も新しい値を指していないため、表示されません。

nextElement が null になるまで通過する 2 番目のループでは、それを割り当てて、誰かがそれを指すようにします。

于 2013-11-04T22:56:33.537 に答える