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が特に有効です。
-
C#でLinkedListの指定したノードの後にノードを追加する方法
C#では、LinkedList<T>クラスを使うことで、双方向リンクリストを簡単に操作できます。この記事では、リンクリスト内の指定されたノードの直後に新しいノードを追加する方法を、具体的なコード例とともに解説します。 LinkedListの作成と初期化 まず、文字列配列をもとにLinkedListを作成し、初期要素を設定します。 string[] students = {Beth, Jennifer, Amy, Vera}; LinkedList<string> list = new LinkedList<string>(students); AddLa
-
C#でリンクリスト(LinkedList)の先頭にノードを追加する方法
C#のLinkedList<T>クラスでは、AddFirst()メソッドを使うことで、リンクリストの先頭に簡単に新しいノードを追加できます。この記事では、その具体的な手順をサンプルコードと実行結果とともにわかりやすく解説します。 1. ノードを含むLinkedListを作成する まず、文字列配列をもとにLinkedListを作成します。コンストラクタに配列を渡すことで、各要素がノードとして順番に格納されます。 string[] students = {Tim, Jack, Henry, David, Tom}; LinkedList<string> list = new