JavaScriptで学ぶリンクリスト(連結リスト)データ構造の基礎
リンクリスト(連結リスト)とは
リンクリスト(連結リスト)とは、複数のデータ構造が「リンク」によって順番に連結された、一連のデータの並びのことです。各リンク(要素)はデータそのものを保持すると同時に、次の要素への参照を持っています。
リンクリストは、配列と並んで最もよく使われるデータ構造の一つです。配列と異なり、要素の追加や削除を柔軟に行えるという特徴があります。
ここで、リンクリストを理解するうえで欠かせない基本的な用語を確認しておきましょう。
リンクリストを構成する基本用語
ノード(Node)
ノードとは、リンクリストを構成する各要素のことです。ノードは「データ(data)」と「次(next)」という2つの部分で成り立っています。
dataには格納したい実際の値が入り、nextにはリスト内の次のノードへの参照(ポインタ)が格納されます。
class Node {
constructor(data) {
this.data = data; // 格納するデータ
this.next = null; // 次のノードへの参照
}
}リンク(Link)
各ノードが持つnextによる参照のことを「リンク」と呼びます。このリンクがノード同士をつなぎ、リスト全体を一方向のチェーンのように形成します。
ヘッド(Head)
リンクリストの先頭にある最初の要素への参照を「ヘッド」と呼びます。リンクリストへのアクセスは必ずこのヘッドから始まるため、ヘッドはリスト全体の入口となる非常に重要な存在です。
まとめ
リンクリストは「ノード」と「次のノードへの参照(リンク)」を組み合わせてデータを管理するデータ構造であり、先頭位置を示す「ヘッド」を基点として操作します。まずはこれらの基本用語をしっかり押さえることが、リンクリストを自在に扱うための第一歩となります。
-
マージアルゴリズムとは|2つのソート済みリストを統合する仕組みを解説
マージアルゴリズムとは マージ(併合)アルゴリズムは、2つの整列済み(ソート済み)リストを1つの整列済みリストに統合するための基本的なアルゴリズムです。さまざまな場面で利用されており、特にマージソートでは、分割された各部分リストを並べ替えた後、それらを大きなリストへと結合する段階でこのマージ処理が必須となります。 基本的な考え方 アプローチは非常にシンプルです。まず2つのリストを用意し、それぞれの先頭要素を指す2つのポインタを準備します。 次に、両ポインタが指す値を比較し、小さい方の要素を結果となる統合リストへ取り出します。そして、取り出した要素が属していた側のポインタを1つ進めます。この操
-
レベルリンク付き(2,4)木:データ構造における効率的な指探索の実現
本記事では、レベルリンク(level links)の導入によって(2,4)木がどのように効率的な指探索(finger search)を実現できるのかを解説します。ここで説明する考え方は、b ≥ 2a を満たす、より一般的な高さ平衡木である(a,b)木のクラスにもそのまま適用できます。(2,4)木の基本性質(2,4)木とは、すべての葉が同じ深さを持ち、すべての内部ノードの次数(子の数)が2、3、4のいずれかである高さ平衡探索木として定義されます。要素は葉に格納され、内部ノードには探索を導くためのキーのみが格納されます。各内部ノードの次数が2以上であるため、(2,4)木の高さは O(log n)