以前、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プログラミング入門 第2版
- JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで
- JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技
プログラミング言語一般については、下記が参考になるでしょう。
- クラスベースのオブジェクト指向プログラミング言語の基礎を学ぶには … 改訂版 基礎Java(CD-ROM付) (IMPRESS KISO SERIES)
- クラスベースのオブジェクト指向プログラミング言語を学ぶには … プログラミング言語Java (The Java Series)
- 関数型プログラミング言語を学ぶには … Scalaスケーラブルプログラミング第2版
- プログラミング言語の理論を学には … プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)