その役割を各ノードには、リンクされたリストで再生しますか?

フセインはalbirouti:

なぜたびに私たちは、新しいノードを作成しp.next、我々が割り当てる必要がありますので、ヌルthis.next常にではないnullをどのような方法?そしてそれがどの役割を果たしにおけるありませんかLinkedList私たちがプリントアウトしようとした場合this.next、それは次のようになりますヌル我々はそれを割り当てる前に、ヌル

System.out.println(this.next);

結果はヌル

また、もしp.next新しいポイントnode我々が設定する必要がある理由p = p.next同じノードを指すように?最後のpに設定尾への目的は、私たちは設定できない場合はtail = p.nextループが終了したため後の最後の一つです。

public class EnkeltLenketListe<T>{
private T value;
private Node<T> next;

private Node(T value, Node<T> next)
{
System.out.println(this.next);
    this.next = next;
    this.value = value;
}
}

private Node<T> head, tail;

public EnkeltLenketListe(T[] a)
{
this();

int i = 0; for (; i < a.length && a[i] == null; i++);

if (i < a.length)
{
    head = new Node<>(a[i], null);
    Node<T> p = head;

    for (i++; i < a.length; i++)
    {
        if (a[i] != null)
        {
            p.next = new Node<>(a[i], null);
            p = p.next;
        }
    }
    tail = p;
}
}
科学的方法:

我々はthis.nextに割り当てるnullに必要なように、各時間は、私たちは、新しいノードp.nextを作成するのはなぜ?

ノードを追加し、除去しながら、私たちは、ノードが意図しないノードを指していないことを確認する必要があります。彼らはいくつかのノードを指している場合があります。

私たちは、同じノードを指すように設定P = p.nextに必要とする理由

あなたはリストを横断している間、リスト内の自分の位置を特定し、維持するために、あなたが頭から開始し、残りのノードに進みます。場合p=p.next、どのようにリストをトラバースするつもりですか?

ループが終了したため後の最後のものである我々だけセットテール= p.nextすることはできません。

いいえ、私たちは、このケースであるためできないp.nextと同じですp.p.nextので、pに設定したp.nextループの内側。前に、次を追加することによって、それをテストtail=p、あなたが取得する必要はnullを

System.out.println(p.next);


編集されました:

あなたのリストを単独で次のノードへのポインタを持っている必要があり、尾を除くすべてのノードを意味し、リストにリンクされている、あなたが開始しました

head = new Node<>(a[i], null);
Node<T> p = head;

この場合phead指しているNode 0下記を参照の画像を。配列内の次のノードがnullでない場合、ループのために何が起こるか見てみましょう

    p.next = new Node<>(a[i], null);
    p = p.next;

この場合p.nextを指しているNode 1通りであり、(下の画像を参照)pを指ししたNode 0今を指すように設定されていますNode 1その両方が「ノード1 'を指しています。最後の1:

tail = p;

あなたは、なぜ我々だけでないことを言いましたかtail=p.nextいいえ、私たちは、このケースであるためできないp.nextと同じですp.p.nextので、pに設定したp.nextループの内側。

単独リンクリスト

ここでの単独リンクリストについて読みます

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=201703&siteId=1