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

C#のLinkedList.AddAfterメソッドでノードを後ろに追加する方法

LinkedList.AddAfterメソッドとは

C#のLinkedList<T>クラスには、指定したノードの後ろに新しいノードを挿入するためのAddAfterメソッドが用意されています。連結リストの中間位置に要素を追加したい場合に活躍するメソッドです。

まず、LinkedListを用意します。

int[] num = {1, 2, 3, 4, 5};
LinkedList<int> list = new LinkedList<int>(num);

次に、AddLast()メソッドを使ってリストの末尾にノードを追加します。

var newNode = list.AddLast(20);

さらに、先ほど追加したノードの後ろに新しいノードを挿入するには、AddAfter()メソッドを使用します。

list.AddAfter(newNode, 30);

サンプルコード

using System;
using System.Collections.Generic;

class Demo {
    static void Main() {
        int[] num = {1, 2, 3, 4, 5};
        LinkedList<int> list = new LinkedList<int>(num);

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

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

        // 上で追加したノードの後ろに新しいノードを追加
        list.AddAfter(newNode, 30);

        Console.WriteLine("新しいノード追加後のLinkedList...");
        foreach (var n in list) {
            Console.WriteLine(n);
        }
    }
}

実行結果

1
2
3
4
5
新しいノード追加後のLinkedList...
1
2
3
4
5
20
30

ポイント解説

AddAfterメソッドには主に2つのオーバーロードがあります。

  • AddAfter(LinkedListNode<T> node, T value):指定したノードの後ろに、指定した値を持つ新しいノードを追加します。
  • AddAfter(LinkedListNode<T> node, LinkedListNode<T> newNode):指定したノードの後ろに、既存のLinkedListNodeインスタンスを追加します。

このメソッドはO(1)の計算量で動作するため、挿入位置のノード参照をすでに持っていれば非常に高速に処理できます。ただし、基準となるノードが現在のLinkedListに属していない場合はInvalidOperationExceptionがスローされる点に注意してください。

  1. C#のList.AddRangeメソッドとは?使い方をサンプルコードで解説

    C#のList.AddRangeメソッドとはList<T>クラスのAddRangeメソッドは、配列や別のリストなど「コレクション全体」に含まれる要素を、既存のリストの末尾へ一括で追加するためのメソッドです。個々の要素をAddメソッドで何度も呼び出して追加する方法と比べると、コードがシンプルになり、可読性も向上します。引数にはIEnumerable<T>型を受け取るため、配列だけでなく他のListやコレクションも指定可能です。基本的な使い方まず、C#でリストを作成し、要素をいくつか追加してみましょう。List<int> list = new List<i

  2. Pythonでリストが回文(パリンドローム)かどうかを判定する方法

    Pythonでは、リストが回文(前から読んでも後ろから読んでも同じ並び)であるかどうかを簡単に判定できます。本記事では、文字列を反転させて元の文字列と比較するメソッドを定義し、その結果に応じてコンソールにメッセージを表示する方法を解説します。処理にはリスト内包表記と join メソッドを使用します。サンプルコード以下が実際の実装例です。def check_palindrome_list(my_str): if my_str == my_str[::-1]: print(The list is a palindrome) else: print(The lis