JavaScriptでキュークラスを実装する方法
キューとは
キュー(Queue)は、先入れ先出し(FIFO: First In, First Out)の原則に従うデータ構造です。最初に追加した要素が最初に取り出されるという特性を持つため、タスクの待ち行列や処理の順番管理など、さまざまな場面で活用されています。
以下は、JavaScriptで実装したQueueクラスの完全なコードです。
Queueクラスの完全な実装
class Queue {
constructor(maxSize) {
// サイズが指定されていない場合はデフォルト値を設定
if (isNaN(maxSize)) {
maxSize = 10;
}
this.maxSize = maxSize;
// キューの値を格納する配列を初期化
this.container = [];
}
// 開発中にすべての値を表示するためのヘルパー関数
display() {
console.log(this.container);
}
// キューが空かどうかをチェック
isEmpty() {
return this.container.length === 0;
}
// キューが満杯かどうかをチェック
isFull() {
return this.container.length >= this.maxSize;
}
enqueue(element) {
// キューが満杯かどうかをチェック
if (this.isFull()) {
console.log("Queue Overflow!"); return;
}
// 末尾に要素を追加するため、pushを使用
this.container.push(element);
}
dequeue() {
// 空かどうかをチェック
if (this.isEmpty()) {
console.log("Queue Underflow!");
return;
}
return this.container.shift();
}
peek() {
if (this.isEmpty()) {
console.log("Queue Underflow!");
return;
}
return this.container[0];
}
clear() {
this.container = [];
}
}各メソッドの解説
constructor(maxSize) ― コンストラクタ
キューの最大サイズを指定して初期化します。引数が数値でない場合(NaNの場合)は、デフォルト値として10が設定されます。キューの実体は、内部の配列containerで管理されます。
display()
開発中にキューの中身を確認するためのヘルパー関数です。console.log()ですべての要素を出力します。
isEmpty()
キューが空かどうかを判定します。要素数が0のときにtrueを返します。
isFull()
キューが満杯かどうかを判定します。要素数が最大サイズ(maxSize)以上のときにtrueを返します。
enqueue(element)
キューの末尾に新しい要素を追加します。追加前にisFull()で満杯チェックを行い、満杯の場合はコンソールに「Queue Overflow!」と表示して処理を中断します。空きがあればpush()で要素を末尾に追加します。
dequeue()
キューの先頭から要素を取り出し、削除します。キューが空の場合は「Queue Underflow!」と表示します。要素の取り出しにはshift()を使用しています。
peek()
キューの先頭の要素を、削除せずに参照します。先頭の要素は配列のインデックス0に格納されているため、this.container[0]で取得できます。
clear()
キュー内のすべての要素を削除し、空の状態に戻します。
使用例
const queue = new Queue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.display(); // [1, 2, 3]
console.log(queue.dequeue()); // 1
console.log(queue.peek()); // 2
queue.clear();
console.log(queue.isEmpty()); // true
パフォーマンスに関する注意点
shift()は配列の先頭要素を削除する際、残りのすべての要素を前方にずらす必要があるため、計算量はO(n)になります。大量のデータを扱う場合は、連結リスト(LinkedList)や循環バッファを使った実装を検討すると、より高いパフォーマンスが期待できます。
-
JavaScriptのキューデータ構造とは?FIFOの仕組みをわかりやすく解説
キュー(Queue)データ構造の基本キュー(Queue)は、スタックと似た性質を持つ抽象的なデータ構造です。しかし、両者には重要な違いがあります。スタックが片側だけ開いているのに対し、キューは両端が開いた構造を持っている点です。キューでは、一方の端から常にデータを挿入し(エンキュー:enqueue)、もう一方の端からデータを取り出します(デキュー:dequeue)。先入れ先出し(FIFO)方式キューは「First-In-First-Out(先入れ先出し)」という方式に従います。これは、最初に格納されたデータ項目ほど最初にアクセスされることを意味します。データの処理順序を厳密に保ちたい場面で、キ
-
JavaScriptでキュー(Queue)を実装する方法を徹底解説
キュー(Queue)とは? キューは先入れ先出し(FIFO:First In First Out)というルールに従うデータ構造です。最初に追加した要素が最初に取り出される仕組みで、レジの待ち行列のように「並んだ順番どおりに処理したい」場面でよく使われます。 JavaScriptでは、配列とクラス(またはプロトタイプ)を組み合わせることで、簡単にキューを実装できます。キューの基本的な操作は次の3つです。 enqueue(エンキュー):キューの末尾に要素を追加する dequeue(デキュー):キューの先頭から要素を取り出す display(表示):キューの中身をすべて画面に表示する 以下は、H