C#でリンクリスト(LinkedList)の走査(トラバーサル)を実装する方法
C#では、System.Collections.Generic名前空間に含まれるLinkedList<T>クラスを使うことで、リンクリストを簡単に扱うことができます。この記事では、リンクリストの作成から要素の追加、そしてノードの走査(トラバーサル)までを解説します。
1. LinkedListコレクションの作成
まず、リンクリストコレクションを生成します。
var list = new LinkedList<string>();
2. 要素の追加
AddLast()メソッドを使うと、リストの末尾に要素を追加できます。
list.AddLast("One");
list.AddLast("Two");
list.AddLast("Four");3. 既存のリストへの挿入
すでに作成済みのLinkedListに対しては、Find()で目的のノードを検索し、その前後に新しい要素を挿入することが可能です。
AddBefore():指定したノードの直前に要素を追加AddAfter():指定したノードの直後に要素を追加
LinkedListNode<string> node = list.Find("Four");
list.AddBefore(node, "Three");
list.AddAfter(node, "Five");4. ノードの走査(トラバーサル)
リンクリスト内のすべてのノードを先頭から順にたどるには、foreachループが便利です。LinkedList<T>はIEnumerable<T>を実装しているため、特別な処理なしでそのまま反復処理が行えます。
サンプルコード
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(string[] args) {
var list = new LinkedList<string>();
list.AddLast("One");
list.AddLast("Two");
list.AddLast("Four");
Console.WriteLine("Traversing...");
foreach(var res in list) {
Console.WriteLine(res);
}
LinkedListNode<string> node = list.Find("Four");
list.AddBefore(node, "Three");
list.AddAfter(node, "Five");
Console.WriteLine("Traversing after adding new elements...");
foreach(var res in list) {
Console.WriteLine(res);
}
}
}実行結果
Traversing... One Two Four Traversing after adding new elements... One Two Three Four Five
まとめ
このように、LinkedList<T>を使えば、末尾への追加(AddLast)、ノードの検索(Find)、任意位置への挿入(AddBefore/AddAfter)を直感的なAPIで行えます。また、foreachによる走査を組み合わせることで、リンクリスト全体の要素を簡単に順番に処理できます。
-
JavaScriptでリンクリスト(連結リスト)を作成する方法
連結リスト(リンクリスト)は、各要素が「データ」と「次の要素への参照」を持つデータ構造です。配列と異なり、要素の挿入や削除を効率的に行えるのが大きな特徴です。この記事では、JavaScriptを使ってシンプルな連結リストを実装する方法を、サンプルコードとともにわかりやすく解説します。 LinkedListクラスとNodeクラスの定義 まず、headをnullで初期化するコンストラクタを持つシンプルなクラスを定義することから始めましょう。あわせて、LinkedListクラスのプロトタイプに、連結リストの各ノードを表すNodeクラスも定義します。 例 class LinkedList { &nbs
-
C言語で連結リストを使った優先度付きキューの実装方法
本記事では、整数値の「データ」と「優先度」が与えられたとき、指定された優先度に従って連結リスト(リンクリスト)を構築し、結果を表示する方法を解説します。 優先度付きキューとは キューはFIFO(First In, First Out:先入れ先出し)方式のデータ構造であり、最初に挿入された要素が最初に取り除かれます。 一方、優先度付きキュー(プライオリティキュー)は、要素の挿入・削除を「優先度」に基づいて行えるキューの一種です。キュー、スタック、連結リストなどのデータ構造を用いて実装でき、以下のルールに従って動作します。 優先度が最も高いデータ(要素)は、優先度が低いものよりも先に処理される。