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

JavaScriptで学ぶ双方向連結リスト(Doubly Linked List)の基本

双方向連結リストとは

双方向連結リスト(Doubly Linked List)は、すべての操作において片方向連結リスト(Singly Linked List)とほぼ同じように動作します。違いは、各ノードが1つ余分にリンクを保持するという点だけです。

片方向連結リストでは、ノードは「next」リンクのみを持っていました。一方、双方向連結リストでは、「next」(次のノードへの参照)と「prev」(前のノードへの参照)の2つのリンクを持ちます。

構造のイメージ

双方向連結リストは、次のように表されます。

JavaScriptで学ぶ双方向連結リスト(Doubly Linked List)の基本

実装時の注意点

クラスとして実装する際には、先頭の要素だけでなく、末尾の要素(tail)も追跡して管理する必要がある点に注意してください。

tail を保持しておくことで、リストの末尾への要素追加や、後ろから前へ辿る逆方向の走査を効率的に行うことができます。これが双方向連結リストならではの利点です。


  1. C++で2つの連結リストの交点を見つける方法

    連結リストとは連結リスト(Linked List)は線形データ構造の一種です。各ノードは2つの部分で構成されており、一方にはノードの値(データ)が、もう一方には次のノードへのアドレス(ポインタ)が格納されています。ここでは、各ノードがリスト内の他のノードを指すポインタを持つ連結リストを想定します。この問題のタスクは、2つの連結リストが交差するノードを見つけることです。交差していない場合は、NULL(空)を出力として返します。入力例1出力:2解説: 与えられた連結リストは値「2」のノードで交差しているため、「2」を出力として返します。入力例2出力:NULL解説: 共通するノードが存在しないため、

  2. C++で実装する双方向循環リンクリスト:アルゴリズムとサンプルコード徹底解説

    循環リンクリストとは 循環リンクリスト(Circular Linked List)は、リンクリストの変形版であり、最初の要素が最後の要素を指し、最後の要素が最初の要素を指す構造を持つデータ構造です。片方向リンクリスト(Singly Linked List)でも双方向リンクリスト(Doubly Linked List)でも、循環リンクリストとして実装することができます。 双方向リンクリストの場合、末尾ノードのnextポインタが先頭ノードを指し、先頭ノードのprevポインタが末尾ノードを指すことで、両方向に循環する構造になります。 上図のように、押さえておくべき重要なポイントは以下の2点です。