質問

循環リンクリストが必要なため、LinkedListが循環リンクリストかどうか疑問に思っていますか

役に立ちましたか?

解決

いいえ。これは二重のリンクリストですが、循環リンクリストではありません。詳細については、 MSDNをご覧ください

LinkedList <!> lt; T <!> gt;ただし、独自の循環リンクリストの優れた基盤となります。しかし、明確なFirstおよびLastプロパティがあり、これらの周りに列挙されません。これは、適切な循環リンクリストです。

他のヒント

<!> quot; next <!> quot;を移動したいときはいつでも、それを循環的に使用するための簡単なソリューション。リストの一部:

current = current.Next ?? current.List.First;

現在のLinkedListNode<T>の場合。

循環データ構造が必要な場合は、 C5ジェネリックコレクションライブラリをご覧ください。 。それらには、循環キュー(これが役立つ場合があります)。

いいえ、そうではありません。 MSDNを参照

LinkedListのパブリックAPIは循環的ではありませんが、内部的には実際に循環しています。 参照ソースを参照すると、実装方法:

// This LinkedList is a doubly-Linked circular list.
internal LinkedListNode<T> head;

もちろん、循環しているという事実を隠すために、リストをトラバースするプロパティとメソッドは、先頭への折り返しを防ぐためのチェックを行います。

LinkedListNode:

public LinkedListNode<T> Next {
    get { return next == null || next == list.head? null: next;}
}

public LinkedListNode<T> Previous {
    get { return prev == null || this == list.head? null: prev;}
}

LinkedList.Enumerator:

public bool MoveNext() {
    if (version != list.version) {
        throw new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumFailedVersion));
    }

    if (node == null) {
        index = list.Count + 1;
        return false;
    }

    ++index;
    current = node.item;   
    node = node.next;  
    if (node == list.head) {
        node = null;
    }
    return true;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top