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

C#でLinkedListの指定したノードの後にノードを追加する方法

C#では、LinkedList<T>クラスを使うことで、双方向リンクリストを簡単に操作できます。この記事では、リンクリスト内の指定されたノードの直後に新しいノードを追加する方法を、具体的なコード例とともに解説します。

LinkedListの作成と初期化

まず、文字列配列をもとにLinkedListを作成し、初期要素を設定します。

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

AddLast()メソッドで末尾にノードを追加

AddLast()メソッドを使用すると、リストの末尾に新しいノードを追加できます。このメソッドは、追加されたノードへの参照(LinkedListNode<T>オブジェクト)を返すため、後続の処理でそのノードを基準として利用できます。

var newNode = list.AddLast("Emma");

AddAfter()メソッドで指定ノードの後にノードを挿入

次に、AddAfter()メソッドを使って、先ほど追加したノードの直後に新しいノードを挿入します。第一引数には基準となるノード、第二引数には追加する値を指定します。

list.AddAfter(newNode, "Matt");

サンプルコード全体

以下に、ここまでの処理をまとめた完全なコード例を示します。

using System;
using System.Collections.Generic;
class Demo {
    static void Main() {
        string[] students = {"Beth", "Jennifer", "Amy", "Vera"};
        LinkedList<string> list = new LinkedList<string>(students);
        foreach (var stu in list) {
            Console.WriteLine(stu);
        }

        // 末尾にノードを追加
        var newNode = list.AddLast("Emma");

        // 追加したノードの後に新しいノードを挿入
        list.AddAfter(newNode, "Matt");

        Console.WriteLine("LinkedList after adding new nodes...");
        foreach (var stu in list) {
            Console.WriteLine(stu);
        }
    }
}

実行結果

Beth
Jennifer
Amy
Vera
LinkedList after adding new nodes...
Beth
Jennifer
Amy
Vera
Emma
Matt

まとめ

このように、AddAfter()メソッドを使えば、LinkedList内の任意のノードの直後に新しいノードを効率的に挿入できます。LinkedListはノード間の参照を書き換えるだけで挿入が完了するため、配列のように後続の要素をずらす必要がなく、高速な挿入操作が可能です。同様に、AddBefore()メソッドを使えば、指定ノードの直前にノードを追加することもできるので、用途に応じて使い分けるとよいでしょう。

  1. Cプログラムで指定されたリストの中央値を求める方法

    リストの要素を大きさの順に並べたとき、全体を同じ個数の2つの部分に分ける中央の値を中央値(メディアン)と呼びます。 要素数が奇数の場合には中央の値がちょうど1つだけ現れますが、偶数の場合には中央に2つの値が並ぶことになります。 そのため、偶数個の要素に対する中央値は「中央にある2つの値の平均」として定義されます。 アルゴリズム 中央値を計算するための手順は、以下のようになります。 要素の個数を数えながら、配列へ値を読み込みます。 値を昇順に並べ替えます。 中央値を計算します。 並べ替え(ソート)のロジック 中央値を求める前に数値を並べ替えるための処理は、隣り合う要素を比較しながら入れ替え

  2. C言語で連結リストの末尾からn番目のノードを取得するプログラム

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