C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でLinkedListの先頭ノードを削除する方法【RemoveFirst()メソッド】

C#のLinkedList<T>クラスでは、RemoveFirst()メソッドを使うことで、リストの先頭にあるノード(最初の要素)を簡単に削除できます。このメソッドを実行すると、先頭ノードが取り除かれ、Countプロパティの値も自動的に1つ減少します。

例1:RemoveFirst()メソッドの基本的な使い方

以下は、LinkedListの先頭ノードを削除するサンプルコードです。

using System;
using System.Collections.Generic;
public class Demo {
    public static void Main(){
        LinkedList<string> list = new LinkedList<string>();
        list.AddLast("One");
        list.AddLast("Two");
        list.AddLast("Three");
        list.AddLast("Three");
        list.AddLast("Three");
        list.AddLast("Four");
        Console.WriteLine("Count of nodes = " + list.Count);
        Console.WriteLine("Elements in LinkedList... (Enumerator iterating through LinkedList)");
        LinkedList<string>.Enumerator demoEnum = list.GetEnumerator();
        while (demoEnum.MoveNext()) {
            string res = demoEnum.Current;
            Console.WriteLine(res);
        }
        // 先頭ノードを削除
        list.RemoveFirst();
        Console.WriteLine("Count of nodes (UPDATED) = " + list.Count);
        Console.WriteLine("Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED");
        demoEnum = list.GetEnumerator();
        while (demoEnum.MoveNext()) {
            string res = demoEnum.Current;
            Console.WriteLine(res);
        }
    }
}

出力

このコードを実行すると、次のような結果が表示されます。

Count of nodes = 6
Elements in LinkedList... (Enumerator iterating through LinkedList)
One
Two
Three
Three
Three
Four
Count of nodes (UPDATED) = 5
Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED
Two
Three
Three
Three
Four

解説

この例では、まずAddLast()メソッドを使って6つの文字列をLinkedListに追加しています。その後、RemoveFirst()を呼び出すと、先頭にあった「One」が削除され、ノード数が6から5に減っていることが確認できます。

例2:RemoveFirst()を複数回呼び出す場合

続いて、RemoveFirst()を連続して2回呼び出したときの動作を見てみましょう。

using System;
using System.Collections.Generic;
public class Demo {
    public static void Main(){
        LinkedList<string> list = new LinkedList<string>();
        list.AddLast("One");
        list.AddLast("Two");
        list.AddLast("Three");
        list.AddLast("Three");
        list.AddLast("Three");
        list.AddLast("Four");
        Console.WriteLine("Count of nodes = " + list.Count);
        Console.WriteLine("Elements in LinkedList... (Enumerator iterating through LinkedList)");
        LinkedList<string>.Enumerator demoEnum = list.GetEnumerator();
        while (demoEnum.MoveNext()) {
            string res = demoEnum.Current;
            Console.WriteLine(res);
        }
        // 先頭ノードを削除(1回目)
        list.RemoveFirst();
        Console.WriteLine("Count of nodes (UPDATED) = " + list.Count);
        Console.WriteLine("Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED");
        demoEnum = list.GetEnumerator();
        while (demoEnum.MoveNext()) {
            string res = demoEnum.Current;
            Console.WriteLine(res);
        }
        // 先頭ノードを削除(2回目)
        list.RemoveFirst();
        Console.WriteLine("Count of nodes (UPDATED AGAIN) = " + list.Count);
        Console.WriteLine("Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED AGAIN");
        demoEnum = list.GetEnumerator();
        while (demoEnum.MoveNext()) {
            string res = demoEnum.Current;
            Console.WriteLine(res);
        }
    }
}

出力

上記のコードを実行すると、次の結果が得られます。

Count of nodes = 6
Elements in LinkedList... (Enumerator iterating through LinkedList)
One
Two
Three
Three
Three
Four
Count of nodes (UPDATED) = 5
Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED
Two
Three
Three
Three
Four
Count of nodes (UPDATED AGAIN) = 4
Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED AGAIN
Three
Three
Three
Four

ポイントまとめ

  • RemoveFirst()は、LinkedListの先頭ノードを削除するためのメソッドです。
  • 削除が行われるたびに、Countプロパティの値が1ずつ減ります。
  • LinkedListが空の状態でRemoveFirst()を呼び出すと、InvalidOperationExceptionがスローされるため、事前にCountプロパティなどで要素の存在を確認しておくと安全です。
  • 先頭ノードの削除はO(1)の計算量で実行できるため、先頭付近での追加・削除が頻繁に行われる場面ではLinkedListが特に有効です。
  1. C#でLinkedListの指定したノードの後にノードを追加する方法

    C#では、LinkedList<T>クラスを使うことで、双方向リンクリストを簡単に操作できます。この記事では、リンクリスト内の指定されたノードの直後に新しいノードを追加する方法を、具体的なコード例とともに解説します。 LinkedListの作成と初期化 まず、文字列配列をもとにLinkedListを作成し、初期要素を設定します。 string[] students = {Beth, Jennifer, Amy, Vera}; LinkedList<string> list = new LinkedList<string>(students); AddLa

  2. C#でリンクリスト(LinkedList)の先頭にノードを追加する方法

    C#のLinkedList<T>クラスでは、AddFirst()メソッドを使うことで、リンクリストの先頭に簡単に新しいノードを追加できます。この記事では、その具体的な手順をサンプルコードと実行結果とともにわかりやすく解説します。 1. ノードを含むLinkedListを作成する まず、文字列配列をもとにLinkedListを作成します。コンストラクタに配列を渡すことで、各要素がノードとして順番に格納されます。 string[] students = {Tim, Jack, Henry, David, Tom}; LinkedList<string> list = new