JavaScriptでのダブルリンクリストの実装方法と使用例


まず、ダブルリンクリストのノードを表すクラスを作成します。以下のようなコードで実現できます。

class Node {
  constructor(data) {
    this.data = data;
    this.prev = null;
    this.next = null;
  }
}

次に、ダブルリンクリスト自体を表すクラスを作成します。以下のようなコードで実現できます。

class DoublyLinkedList {
  constructor() {
    this.head = null;
    this.tail = null;
  }
// リストの先頭に要素を追加するメソッド
  prepend(data) {
    const newNode = new Node(data);
    if (!this.head) {
      this.head = newNode;
      this.tail = newNode;
    } else {
      newNode.next = this.head;
      this.head.prev = newNode;
      this.head = newNode;
    }
  }
// リストの末尾に要素を追加するメソッド
  append(data) {
    const newNode = new Node(data);
    if (!this.head) {
      this.head = newNode;
      this.tail = newNode;
    } else {
      newNode.prev = this.tail;
      this.tail.next = newNode;
      this.tail = newNode;
    }
  }
// リストから指定された要素を削除するメソッド
  remove(data) {
    let currentNode = this.head;
    while (currentNode) {
      if (currentNode.data === data) {
        if (currentNode === this.head && currentNode === this.tail) {
          this.head = null;
          this.tail = null;
        } else if (currentNode === this.head) {
          this.head = currentNode.next;
          this.head.prev = null;
        } else if (currentNode === this.tail) {
          this.tail = currentNode.prev;
          this.tail.next = null;
        } else {
          currentNode.prev.next = currentNode.next;
          currentNode.next.prev = currentNode.prev;
        }
        break;
      }
      currentNode = currentNode.next;
    }
  }
// リスト内の要素を表示するメソッド
  display() {
    let currentNode = this.head;
    while (currentNode) {
      console.log(currentNode.data);
      currentNode = currentNode.next;
    }
  }
}

以上が、JavaScriptでのダブルリンクリストの実装方法です。以下に、実際の使用例を示します。

const list = new DoublyLinkedList();
list.append(1);
list.append(2);
list.prepend(3);
list.display(); // 出力: 3 1 2
list.remove(1);
list.display(); // 出力: 3 2

このように、ダブルリンクリストを使用することで、リスト内の要素を追加、削除、検索することが簡単になります。必要に応じて、さまざまなメソッドを追加して機能を拡張することもできます。

以上が、JavaScriptでのダブルリンクリストの実装方法と使用例です。このデータ構造を活用することで、さまざまなアプリケーションやプログラムで効率的なデータ管理を行うことができます。