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


  1. リンクリストのノードを表すクラスを作成する: リンクリストのノードは、データと次のノードへの参照を持つ必要があります。以下は、JavaScriptでのリンクリストのノードを表すクラスの例です。
class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}
  1. リンクリストの実装と基本的な操作: リンクリストは、ノードの集合であり、最初のノードを指すヘッドと呼ばれる参照が必要です。以下は、リンクリストの実装と基本的な操作の例です。
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;
    }
  }
// リンクリストの特定の位置に新しいノードを挿入する
  insertAt(position, data) {
    const newNode = new Node(data);
    if (position === 0) {
      newNode.next = this.head;
      this.head = newNode;
    } else {
      let current = this.head;
      let previous = null;
      let index = 0;
      while (index < position) {
        previous = current;
        current = current.next;
        index++;
      }
      newNode.next = current;
      previous.next = newNode;
    }
  }
// リンクリストから特定のデータを削除する
  remove(data) {
    let current = this.head;
    let previous = null;
    while (current !== null) {
      if (current.data === data) {
        if (previous === null) {
          this.head = current.next;
        } else {
          previous.next = current.next;
        }
        return;
      }
      previous = current;
      current = current.next;
    }
  }
// リンクリストを表示する
  display() {
    let current = this.head;
    while (current !== null) {
      console.log(current.data);
      current = current.next;
    }
  }
}
  1. リンクリストの使用例: リンクリストを使用するための例を以下に示します。
const linkedList = new LinkedList();
linkedList.append(10);
linkedList.append(20);
linkedList.append(30);
linkedList.insertAt(1, 15);
linkedList.remove(20);
linkedList.display();

上記の例では、リンクリストを作成し、要素を追加、挿入、削除しています。最後に、リンクリストの内容を表示しています。

このようにして、JavaScriptでリンクリストを実装し、データを効果的に管理することができます。リンクリストは、データの挿入と削除が頻繁に行われる場合や、可変サイズのデータセットを扱う場合に特に有用です。