0

わかりました、解決策はおそらく非常に簡単ですが、現時点では理解できません。

コード:

ListElem<T> first;
int size = 0;
public void add(T value) {
  if (value == null)
    return;
  ListElem<T> elem = new ListElem<T>(value);
  elem.next = first;
  first = elem;
  size++;
}

シングルチェーン リンク リストの先頭にどのように要素を追加しますか? 指定された値で新しい要素を作成します。

次の 2 行で何が起こるでしょうか。リストに要素を挿入するプロセスは理解していますが、それをこのコードに関連付けることができません。

そして、最初は正確には何ですか?頭?

4

2 に答える 2

3

スタックを追加する前は、次のようになります。

最初 -> 次 -> 次 -> ... -> 終わり;

elem を作成します。

次に、「elem の次の elem は最初の elem です」と言いました。

elem.next = first;だからあなたは持っています

elem -> 最初;

最後に、最初の elem を elem に設定します。したがって、スタックは次のようになります。

elem -> 最初 -> 次 -> ... -> 終わり;

最初の id は elem なので、基本的に最初の状態に戻ります。

最初 -> 次 -> 次 -> ... -> 終わり; (first は、追加したばかりの新しい elem です)

このスキーマは役に立つかもしれません:

ここに画像の説明を入力

于 2013-05-14T21:01:32.743 に答える