ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript でのキューの詳細な紹介 (コード例)

JavaScript でのキューの詳細な紹介 (コード例)

不言
不言転載
2019-02-13 09:36:092098ブラウズ

この記事では、JavaScript のキューについて詳しく説明します (コード例)。必要な方は参考にしていただければ幸いです。

キューの定義

キューは、先入れ先出しの原則に従う、順序付けられたアイテムのセットです。スタックとの違いは、スタックであることです。スタック操作はすべてスタックの先頭で実行されますが、キューはキューの末尾に要素を追加し、キューの先頭から要素を削除します。プロセス:

JavaScript でのキューの詳細な紹介 (コード例)

より鮮明な例は次のとおりです。キューイング サービス、最初にキューに並んだ人が、キュー ジャンプの状況に関係なく、常に最初にサービスを受けます。

キューの作成

スタックの作成は、最初にキューを表す関数を作成し、次にキュー内の要素を保存する配列を定義します。 #

function Queue() {
  let items = []
}
キューを作成した後、キューにいくつかのメソッドを定義する必要があります。一般に、キューには次のメソッドが含まれます。

  • enqueue(element): 新しい項目を追加します。キューの最後まで

  • dequeue(): キューの最初の項目を削除し、削除された要素を返します。

  • front(): 戻り値キューの最初の項目であり、キューは何も変更しません

  • isEmpty(): キューに要素がない場合は true を返し、それ以外の場合は false を返します

  • size(): キューに含まれる要素の数を返します

具体的な実装:

function Queue() {
  let items = []
  // 向队列的尾部添加新元素
  this.enqueue = function (element) {
    items.push(element)
  }
  // 遵循先进先出原则,从队列的头部移除元素
  this.dequeue = function () {
    return items.shift()
  }
  // 返回队列最前面的项
  this.front = function () {
    return items[0]
  }
  // 返回队列是否为空
  this.isEmpty = function () {
    return items.length === 0
  }
  // 返回队列的长度
  this.size = function () {
    return items.length
  }
  // 打印队列,方便观察
  this.print = function () {
    console.log(items.toString())
  }
}

キューの使用

次にキューの使用法を見てみましょう:

let queue = new Queue()
queue.enqueue('a')
queue.enqueue('b')
queue.enqueue('c')
queue.dequeue()
queue.print()
まず、a、b、c の 3 つの要素をキューに追加し、次にキューから要素を 1 つ削除し、最後に出力します。既存のキューを一緒に説明しましょう。

JavaScript でのキューの詳細な紹介 (コード例)

#es6 は Queue

Stack クラスを実装するのと同じように、次のことができます。また、es6 クラス構文を使用して Queue クラスを実装し、WeakMap を使用してプライベート属性項目を保存し、クロージャを使用して Queue クラスを返します。具体的な実装を見てみましょう:

let Queue = (function () {
  let items = new WeakMap
  class Queue {
    constructor () {
      items.set(this, [])
    }
    enqueue (element) {
      let q = items.get(this)
      q.push(element)
    }
    dequeue () {
      let q = items.get(this)
      return q.shift()
    }
    front () {
      let q = items.get(this)
      return q[0]
    }
    isEmpty () {
      let q = items.get(this)
      return q.length === 0
    }
    size () {
      let q = items.get(this)
      return q.length
    }
    print () {
      let q = items.get(this)
      console.log(q.toString())
    }
  }
  return Queue
})()
let queue = new Queue()
queue.enqueue('a')
queue.enqueue('b')
queue.enqueue('c')
queue.dequeue()
queue.print()

Priority Queue##。

#優先キュー。その名前が示すように、キュー内の各要素には独自の優先順位があり、挿入操作は優先順位に従って実行されます。これは以前とは少し異なります。キューの実装の違いは、優先度属性を持つキュー内にさらに多くの要素があることです。具体的なコードを見てみましょう。

function PriorityQueue() {
  let items = []
  // 队列元素,多定义一个优先级变量
  function QueueElement(element, priority) {
    this.element = element
    this.priority = priority
  }
  this.enqueue = function (element, priority) {
    let queueElement = new QueueElement(element, priority)
    let added = false
    for (let i = 0; i  キューに参加するとき、キューが空の場合は、キューに直接追加します。それ以外の場合は、比較して、レベルが高いほど優先度が高くなります。 <p></p><p> 図を使用して呼び出しプロセスを確認してみましょう。 <br></p><p>#循環キュー<img src="https://img.php.cn/upload/image/471/355/539/1550021327400018.png" title="1550021327400018.png" alt="JavaScript でのキューの詳細な紹介 (コード例)"></p><p   style="max-width:90%"> 名前が示すように、循環キューは次のとおりです。番号を指定すると、キューを反復し、キューの先頭から項目を削除します。ループが指定された数に達したら、キューの先頭から 1 つの項目を削除して、残りの要素を 1 つ見てみましょう。コード: <strong><pre class="brush:php;toolbar:false">unction Queue() {
  let items = []
  this.enqueue = function (element) {
    items.push(element)
  }
  this.dequeue = function () {
    return items.shift()
  }
  this.front = function () {
    return items[0]
  }
  this.isEmpty = function () {
    return items.length === 0
  }
  this.size = function () {
    return items.length
  }
  this.print = function () {
    console.log(items.toString())
  }
}
function loopQueue(list, num) {
  let queue = new Queue()
  for (let i = 0; i<list.length> 1) {
    for (let j = 0; j<num console.log></num></list.length>

以上がJavaScript でのキューの詳細な紹介 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。