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

【C#】LinkedListの末尾ノードを削除する方法(RemoveLastメソッドの使い方)

C#のLinkedList<T>から最後のノード(末尾の要素)を削除するには、RemoveLast()メソッドを使用します。この記事では、具体的なコード例と実行結果を交えながら、その使い方をわかりやすく解説します。

サンプルとして使用するLinkedList

まず、次のような文字列型のLinkedListを用意します。

string[] employees = {"Patrick", "Robert", "John", "Jacob", "Jamie"};
LinkedList<string> list = new LinkedList<string>(employees);

このリストには5つの要素が格納されています。ここで、末尾のノードである「Jamie」を削除したい場合に使うのが、RemoveLast()メソッドです。呼び出し方は非常にシンプルで、次の1行だけで済みます。

list.RemoveLast();

完全なコード例

以下は、リストの内容を表示した後、末尾のノードを削除し、再度表示して変化を確認する完全なプログラム例です。

using System;
using System.Collections.Generic;

class Demo {
    static void Main() {
        string[] employees = {"Patrick", "Robert", "John", "Jacob", "Jamie"};
        LinkedList<string> list = new LinkedList<string>(employees);

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

        // 末尾のノードを削除
        list.RemoveLast();

        Console.WriteLine("末尾のノード削除後のLinkedList...");

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

実行結果

Patrick
Robert
John
Jacob
Jamie
末尾のノード削除後のLinkedList...
Patrick
Robert
John
Jacob

ポイント解説

  • RemoveLast()は、リストが空の場合にInvalidOperationExceptionをスローするため、事前にCountプロパティなどで要素数を確認しておくと安全です。
  • 先頭のノードを削除したい場合は、同様にRemoveFirst()メソッドを使用します。
  • 特定の値を持つノードを削除したい場合は、Remove(値)メソッドが利用できます。

このように、LinkedList<T>では先頭・末尾への追加や削除がO(1)で高速に行えるため、両端の操作が頻繁に発生する処理に適しています。

  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で循環リンクリストの末尾からノードを削除する方法【初心者向け解説】

    循環リンクリストの末尾からノードを削除したい場合、まず「Node」クラスを作成する必要があります。このクラスには、ノードに格納されるデータと、リンクリスト内の次のノードへの参照という2つの属性を持たせます。循環リンクリストでは、先頭(head)と末尾(tail)が互いに隣接しており、これらが連結されて円状の構造を形成します。そのため、最後のノードに「NULL」値は存在しません。さらに、初期化関数を持つ「linked_list」クラスを作成し、headを「None」で初期化します。以下に具体的な実装例を示します。サンプルコードclass Node: def __init__(self,