モダンJavaScript入門: 連結リスト内の値を検索する方法

目次

  1. はじめに
  2. 連結リストとは
  3. JavaScriptでの連結リストの実装
  4. コード例: 連結リスト内の値を検索する
  5. 応用例
  6. まとめ

1. はじめに

JavaScriptで連結リスト内の値を検索する方法を学ぶための記事です。

2. 連結リストとは

連結リストは、各ノードがデータと次のノードへのリンクを持つデータ構造です。リストの先頭はヘッドと呼ばれ、リストの最後はnullにリンクされています。

3. JavaScriptでの連結リストの実装

JavaScriptで連結リストを実装するには、NodeクラスとLinkedListクラスを作成します。Nodeクラスはデータと次のノードへのリンクを持ち、LinkedListクラスはヘッドノードとリスト操作のメソッドを持ちます。

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

class LinkedList {
  constructor() {
    this.head = null;
  }
}

4. コード例: 連結リスト内の値を検索する

次に、連結リスト内の値を検索するメソッドをLinkedListクラスに追加します。

class LinkedList {
  // ...
  find(value) {
    let current = this.head;
    while (current !== null) {
      if (current.data === value) {
        return current;
      }
      current = current.next;
    }
    return null;
  }
}

5. 応用例

ここでは、このアプローチを応用したいくつかのコード例を示します。

  1. 連結リスト内の全ての値を表示する:
class LinkedList {
  // ...
  display() {
    let current = this.head;
    while (current !== null) {
      console.log(current.data);
      current = current.next;
    }
  }
}
  1. 連結リスト内の値を逆順に表示する:
class LinkedList {
  // ...
  displayReverse(node = this.head) {
    if (node === null) return;
    this.displayReverse(node.next);
    console.log(node.data);
  }
}
  1. 連結リストから特定の値を持つノードを削除する:
class LinkedList {
  // ...
  remove(value) {
    if (this.head === null) return;
    if (this.head.data === value) {
      this.head = this.head.next;
      return;
    }
    let current = this.head;
    while (current.next !== null) {
      if (current.next.data === value) {
        current.next = current.next.next;
        return;
      }
      current = current.next;
    }
  }
}

6. まとめ

この記事では、JavaScriptで連結リスト内の値を検索する方法について説明しました。連結リストを理解し、適切に使用することで、効率的なコードを書くことができます。