LinkedList<T>クラス

双方向リスト (双方向連結リスト / ダブルリンク リスト / 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) 指定の値を含む最後のノードを得られる
       

AddLast(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

Remove(T)

最初に見つかった値を削除できます。

線形検索で実行されるため、計算量はCountをnとしてO(n)です。これは内部ではFind(T)を呼んでいるためです。Remove - linkedlist.cs

Find(T)

public System.Collections.Generic.LinkedListNode<T> Find (T value);
LinkedList<T>.Find(T) メソッド (System.Collections.Generic) | Microsoft Learn

線形検索で実行されるため、計算量はCountをnとしてO(n)です。

見つからなければnullが返されます。

LinkedListNode<T>クラス

プロパティ 内容
LinkedList<T> List このインスタンスが属するLinkedList<T>。属していなければnull
LinkedListNode<T> Previous LinkedListNode<T>内の、前のノード。現在が最初のノードならばnull
LinkedListNode<T> Next LinkedListNode<T>内の、次のノード。現在が最後のノードならばnull
T Value ノードの格納された値
プロパティ - LinkedListNode<T> クラス (System.Collections.Generic) | Microsoft Learn
Microsoft Learnから検索