双方向リスト (双方向連結リスト / ダブルリンク リスト / doubly linked list) を表します。インデックスで要素にアクセスできませんが、コレクションの中間への要素の挿入と削除が高速です。
[System.Runtime.InteropServices.ComVisible(false)] [System.Serializable] public class LinkedList<T> : System.Collections.Generic.ICollection<T> System.Collections.Generic.IEnumerable<T> System.Collections.Generic.IReadOnlyCollection<T> System.Collections.ICollection System.Runtime.Serialization.IDeserializationCallback System.Runtime.Serialization.ISerializable
コンストラクタ | |
---|---|
LinkedList<T>() | |
LinkedList<T>(IEnumerable<T>) | |
LinkedList<T>(SerializationInfo, StreamingContext) |
型 | プロパティ | 内容 |
---|---|---|
int | Count | 格納されているノードの数 |
LinkedListNode<T> | First | 最初のノード |
LinkedListNode<T> | Last | 最後のノード |
LinkedList<int> list = new LinkedList<int>(new[] { 0, 1, 2 }); LinkedListNode<int> f1 = list.First; // 0 LinkedListNode<int> l1 = list.Last; // 2 LinkedListNode<int> f2 = f1.Previous; // null LinkedListNode<int> f3 = f1.Next; // 1 bool b = object.ReferenceEquals(list, f1.List); // true list.AddFirst(10); LinkedListNode<int> f4 = list.First; // 10 LinkedListNode<int> f5 = f1.Previous; // 10
区分 | 戻り値の型 | メソッド | 機能 |
---|---|---|---|
追加 | LinkedListNode<T> | AddFirst(T) | 先頭に、指定の値を含んだ新しいノードを追加できる |
LinkedListNode<T> | AddLast(T) | 末尾に、指定の値を含んだ新しいノードを追加できる | |
LinkedListNode<T> | AddBefore(LinkedListNode<T>, T) | 指定の既存のノードの前に、指定の値を含んだ新しいノードを追加できる | |
LinkedListNode<T> | AddAfter(LinkedListNode<T>, T) | 指定の既存のノードの後に、指定の値を含んだ新しいノードを追加できる | |
削除 | bool | Remove(T) | 最初に見つかった、指定の値を削除する |
void | RemoveFirst() | 先頭のノードを削除する | |
void | RemoveLast() | 末尾のノードを削除する | |
void | Clear() | すべてのノードを削除できる | |
bool | Contains(T) | 指定の値が含まれるか確認できる | |
検索 | LinkedListNode<T> | Find(T) | 指定の値を含む最初のノードを得られる |
LinkedListNode<T> | FindLast(T) | 指定の値を含む最後のノードを得られる | |
public System.Collections.Generic.LinkedListNode<T> AddLast (T value);AddLast(T) - LinkedList<T>.AddLast メソッド (System.Collections.Generic) | Microsoft Learn
計算量はO(1)です。List<T>と異なり容量という概念がないため、要素の追加でO(n)となることはありません。AddLast - linkedlist.cs
最初に見つかった値を削除できます。
線形検索で実行されるため、計算量はCountをnとしてO(n)です。これは内部ではFind(T)を呼んでいるためです。Remove - linkedlist.cs
public System.Collections.Generic.LinkedListNode<T> Find (T value);LinkedList<T>.Find(T) メソッド (System.Collections.Generic) | Microsoft Learn
線形検索で実行されるため、計算量はCountをnとしてO(n)です。
見つからなければnullが返されます。
型 | プロパティ | 内容 |
---|---|---|
LinkedList<T> | List | このインスタンスが属するLinkedList<T>。属していなければnull |
LinkedListNode<T> | Previous | LinkedListNode<T>内の、前のノード。現在が最初のノードならばnull |
LinkedListNode<T> | Next | LinkedListNode<T>内の、次のノード。現在が最後のノードならばnull |
T | Value | ノードの格納された値 |