JavaScriptでQueueを実装してみよう

以前、JavaScriptでStackを実装しましたが、Queueの実装も簡単にできます。

Queueは入れた順にデータを取り出せるデータ構造です。Stackと同じように配列オブジェクトのメソッドを利用して簡単に実装ができます。

(function(undefined) {
  "use strict";
  var global = Function('return this')();
  function Queue() {
    this.q = [];
  }
  Queue.prototype.empty = function() {
    return this.q.length === 0;
  }
  Queue.prototype.size = function() {
    return this.q.length;
  }
  Queue.prototype.enqueue = function(value) {
    this.q.push(value);
  }
  Queue.prototype.dequeue = function() {
    if (this.empty()) {
      return undefined;
    } else {
      return this.q.shift();
    }
  }
  Queue.prototype.peek = function() {
    if (this.empty()) {
      return undefined;
    } else {
      return this.q[0];
    }
  }
  global.Queue = Queue;
}());

利用例は次のとおり。実行すると、JavaScript, Java, Ruby の順に表示されます。

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Queue</title>
  <script src="queue.js"></script>
</head>
<body>
  <div id="logtext" style="position:absolute;"></div><br />
<script>
function log(element) {
  var html = document.getElementById('logtext').innerHTML;
  document.getElementById('logtext').innerHTML = html + '<br>' + element;
}

var queue = new Queue();
queue.enqueue("JavaScript");
queue.enqueue("Java");
queue.enqueue("Ruby");

while (queue.peek()) {
  log(queue.dequeue())
}
</script>
</body>
</html>

JavaScriptについては、下記の書籍の参考になるでしょう。

プログラミング言語一般については、下記が参考になるでしょう。

同じタグの記事: JavaScript
同じタグの記事: program
同じカテゴリの記事: Program
関連書籍: JavaScript
関連書籍: program