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

C#でLinkedList(リンクリスト)から指定した値の最初のノードを削除する方法

C#のLinkedList<T>クラスでは、Remove()メソッドを使うことで、指定した値と一致する最初のノードを簡単に削除できます。この記事では、具体的なコード例を通じてその使い方を解説します。

LinkedListの作成

まず、文字列型のノードを格納したLinkedListを作成します。

string[] students = {"Katie", "Jennifer", "Amy", "Vera"};
LinkedList<string> list = new LinkedList<string>(students);

ここでは、「Katie」「Jennifer」「Amy」「Vera」という4つの要素を持つリンクリストが生成されます。

Remove()メソッドでノードを削除する

次に、文字列要素「Vera」を持つノードを削除してみましょう。削除にはRemove()メソッドを使用します。

list.Remove("Vera");

Remove()メソッドは、リスト内を先頭から走査し、引数に指定した値と一致する最初に出現したノードのみを削除します。該当するノードが存在しない場合は、リストは変更されず、falseが返されます。

サンプルコード全体

using System;
using System.Collections.Generic;

class Demo {
    static void Main() {
        string[] students = {"Katie", "Jennifer", "Amy", "Vera"};
        LinkedList<string> list = new LinkedList<string>(students);

        foreach (var stu in list) {
            Console.WriteLine(stu);
        }

        // ノードを削除
        list.Remove("Vera");

        Console.WriteLine("LinkedList after removing a node...");
        foreach (var stu in list) {
            Console.WriteLine(stu);
        }
    }
}

実行結果

Katie
Jennifer
Amy
Vera
LinkedList after removing a node...
Katie
Jennifer
Amy

ポイントまとめ

  • Remove(T value)は、指定した値と一致する最初のノードだけを削除します。
  • 削除対象が見つかった場合はtrue、見つからなかった場合はfalseを返します。
  • すべての一致ノードを削除したい場合は、while (list.Remove(value)) { }のようにループ処理を組み合わせます。
  • 先頭や末尾のノードを削除したい場合は、それぞれRemoveFirst()RemoveLast()メソッドが便利です。
  1. C言語で連結リストの末尾からn番目のノードを取得するプログラム

    n個のノードからなる連結リストが与えられたとき、その末尾からn番目のノードを出力するのが本記事の目的です。プログラムはリスト内のノードの並び順を変更してはならず、あくまで末尾から数えてn番目に位置するノードの値を表示するだけでなければなりません。具体例入力 -: 10 20 30 40 50 60   N = 3 出力 -: 40上記の例では、先頭ノードから順に「count − n」個目までのノード(10, 20, 30, 40, 50, 60)を走査し、末尾から3番目のノードとして 40 が得られます。効率的なアプローチリスト全体を最後まで走査しなくても、以下の手順で目的のノードを見つけられ

  2. Pythonで連結リストの後ろからK番目のノードを見つけるプログラム

    問題概要片方向連結リストが与えられたとき、後ろからk番目のノード(0始まりのインデックス)の値を求めることを考えます。ただし、この問題はリストを1回の走査(シングルパス)で解く必要があります。例えば、入力が node = [5,4,6,3,4,7]、k = 2 の場合、出力は 3 になります。これは、後ろから2番目(インデックス3)のノードの値が3であるためです。解法のアプローチ:2ポインタ技法この問題を効率的に解くには、2つのポインタを使う手法が有効です。片方のポインタを先にkステップだけ進めておき、その後両方のポインタを同時に末尾へ向けて進めます。先頭のポインタが末尾に到達したとき、もう片