JavaScriptにおけるリンクリストの実装と操作方法


まず、リンクリストの基本的な構造を理解しましょう。リンクリストは、ノードと呼ばれるオブジェクトの連なりで構成されています。各ノードは、データと次のノードへの参照(ポインタ)を持っています。最初のノードをヘッドと呼び、最後のノードの参照はnullとなります。

リンクリストを作成するには、ノードオブジェクトを作成し、必要なデータを格納します。次に、ノード同士を連結するために、ノードの参照を設定します。例えば、2つのノードを作成した場合、最初のノードの参照を2番目のノードに設定します。

リンクリストの操作方法には、以下のようなものがあります。

  1. リンクリストの末尾にノードを追加する方法:

    • 新しいノードを作成し、現在のリンクリストの最後のノードの参照を新しいノードに設定します。
  2. リンクリストの先頭にノードを追加する方法:

    • 新しいノードを作成し、新しいノードの参照を現在のヘッドのノードに設定します。そして、新しいノードを新しいヘッドとして設定します。
  3. リンクリストからノードを削除する方法:

    • 削除したいノードの前後のノードの参照を修正し、削除したいノードを参照しないようにします。
  4. リンクリストを走査する方法:

    • リンクリストの先頭から順番にノードをたどり、データを取得したり、条件に基づいて処理を行います。

これらはリンクリストの基本的な操作方法ですが、実際のプログラムではさらに多くの操作が可能です。例えば、リンクリストを逆順にする、特定のデータを検索する、リンクリストをソートするなどの操作があります。

JavaScriptでリンクリストを実装するコード例を以下に示します。

class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}
class LinkedList {
  constructor() {
    this.head = null;
  }
  append(data) {
    const newNode = new Node(data);
    if (!this.head) {
      this.head = newNode;
    } else {
      let current = this.head;
      while (current.next) {
        current = current.next;
      }
      current.next = newNode;
    }
  }
  prepend(data) {
    const newNode = new Node(data);
    newNode.next = this.head;
    this.head = newNode;
  }
  delete(data) {
    if (!this.head) {
      return;
    }
    if (this.head.data === data) {
      this.head = this.head.next;
      return;
    }
    let current = this.head;
    while (current.next) {
      if (current.next.data === data) {
        current.next = current.next.next;
        return;
      }
      current = current.next;
    }
  }
 printList() {
    let current = this.head;
    while (current) {
      console.log(current.data);
      current = current.next;
    }
  }
// 他の操作も追加できます
}
// 使用例
const linkedList = new LinkedList();
linkedList.append(1);
linkedList.append(2);
linkedList.append(3);
linkedList.prepend(0);
linkedList.delete(2);
linkedList.printList();

このコードは、NodeクラスとLinkedListクラスを定義しています。Nodeクラスは、リンクリストのノードを表すオブジェクトで、データと次のノードへの参照を保持します。LinkedListクラスは、リンクリストを操作するためのメソッドを提供します。

以上がJavaScriptでリンクリストを実装し、操作する方法の簡単な紹介です。これらの基本的な操作を理解し、必要に応じてカスタマイズすることで、さまざまなプログラムでリンクリストを活用することができます。