JavaScriptのデータ構造


イントロ


終わったら、キューから始めます.

どのようなキューですか?

  • "First In, First Out"-Principleを使います
  • 例:ストアの前の人々のキュー、プリンタキュー
  • は、キューを実装するために複数の方法があります:配列、シングルリンクリスト、双方向リンクリスト

  • キューのビッグO

  • のアクセス:O(N)
  • の検索:O(N)
  • 挿入:O(1)
  • 削除される


  • 私たちは私たちのキューを構築するために、単一のリンクリストを使用します.O(1)
  • 私たちはenqueue(=add)を最後まで(例えば、新しい人はキューの最後の人になる)
  • 私たちはスタートからdequeue(=remove)を行うことができます
  • A (start) ==> B (end)は、ライン
  • の次のノードです
  • Aは、次のノード(A)
  • にポインタ(next)を有する
  • Bは待ち行列
  • にenqueueされた最後のノードです
  • デキュー(= remove ) Bなら、行の次のノードはAであるべきです
  • セットアップ


    キューを構築するには、以下の部分が必要です.
  • 値とノードと待ち行列
  • の次の項目へのポインタを持つノード
  • 長さのキュー、キューの先頭へのポインタ、キューの終端へのポインタ
  • // a Node has a value (`value`) and a pointer to the next node (`next`)
    class Node {
      constructor(value) {
        this.value = value;
        this.next = null;
      }
    }
    
    // a Queue has a length (`length`), a start (`start`), an end (`end`)
    class Queue {
      constructor() {
        this.length = 0;
        this.start = null;
        this.end = null;
      }
    }
    

    思考


    私たちは待ち行列を設けた.キュー内で少なくとも2つのメソッドが必要です.
  • キューの末尾に新しいノードを追加するメソッド:B
  • キューの先頭からノードを削除する方法:enqueue
  • 次部分


    キューの最初のメソッドを実装します.
    興味深いもの、subscribeをお見逃しなく!

    質問

  • 私たちは、キューを作るために配列を使うこともできました.どうやってこれをできるの?任意の長所や短所?