C#のLinkedList(連結リスト)の基本と使い方を解説
C#のLinkedList<T>とは
C#では、System.Collections.Generic名前空間に用意されているLinkedList<T>クラスを使用することで、連結リスト(リンクリスト)を簡単に扱うことができます。
LinkedList<T>の最大の特徴は、リスト内への要素の挿入と削除を高速に行える点です。配列ベースのコレクションと異なり、要素の追加・削除時に他の要素を移動させる必要がないため、データの入れ替えが頻繁に発生する場面で特に有効です。
LinkedList<T>の主な特徴
- 要素の挿入・削除が高速に行える
- 重複した要素を格納できる
- System.Collections.Generic名前空間に属するジェネリッククラスである
- 双方向連結リストとして実装されており、前後どちらの方向にも走査できる
使用例
以下は、LinkedList<string>を作成し、AddLastメソッドで末尾に要素を追加した後、foreachループで全要素を表示するサンプルコードです。
using System;
using System.Collections.Generic;
class Demo {
static void Main() {
LinkedList<string> l = new LinkedList<string>();
l.AddLast("one");
l.AddLast("two");
l.AddLast("three");
foreach(var ele in l) {
Console.WriteLine(ele);
}
}
}
実行結果
one
two
three
このように、LinkedList<T>を使えばシンプルな記述で連結リストを操作できます。先頭への追加にはAddFirstメソッドも利用できるため、用途に応じて使い分けるとよいでしょう。
-
JavaでLinkedList(連結リスト)を実装するプログラムの書き方
この記事では、Javaで連結リスト(Linked List)を実装する方法を詳しく解説します。java.util.LinkedListクラスは、双方向連結リストとして期待される操作を提供するクラスです。インデックスを指定して要素にアクセスする場合、指定されたインデックスに近い方から、リストの先頭または末尾のいずれかを起点として走査が行われます。以下に、その実装例を示します。実行結果の例入力:プログラムを実行する期待される出力:The elements of the linked list are: 100 150 200 250アルゴリズムステップ1 - 開始 ステップ2 - 必要なメンバーを
-
Rubyの内部実装:EnumeratorとEnumerableの仕組みを自作で理解する
Ruby Magicへようこそ!1年前、私たちはRubyのEnumerableモジュールについて学びました。これは配列、範囲、ハッシュなどの列挙可能なオブジェクトを操作する際に使うメソッドを提供します。 当時、LinkedListクラスを作成し、#eachメソッドを実装することでオブジェクトを列挙可能にする方法を示しました。Enumerableモジュールをincludeすることで、#count、#map、#selectなどのメソッドを、自前で実装せずともあらゆるリンクドリストで呼び出せるようになりました。 列挙可能オブジェクトの使い方は理解しましたが、それらは内部でどう動いているのでしょう?R