JavaScriptでスタッククラスを実装する方法【完全なコード例つき】
スタック(Stack)は、「後入れ先出し(LIFO: Last In, First Out)」と呼ばれる基本的なデータ構造の一つです。最後に追加した要素が最初に取り出されるという特性を持つため、ブラウザの履歴管理や元に戻す(Undo)機能など、さまざまな場面で活用されています。
この記事では、JavaScriptでスタッククラスを実装する方法を、完全なサンプルコードとともにわかりやすく解説します。
スタッククラスの完全な実装
以下は、JavaScriptで記述したスタッククラスの完全な実装例です。
class Stack {
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;
}
push(element) { // スタックが満杯かどうかをチェック
if (this.isFull()) {
console.log("Stack Overflow!");
return;
}
this.container.push(element);
}
pop() { // 空かどうかをチェック
if (this.isEmpty()) {
console.log("Stack Underflow!");
return;
}
this.container.pop();
}
peek() {
if (this.isEmpty()) {
console.log("Stack Underflow!");
return;
}
return this.container[this.container.length - 1];
}
clear() {
this.container = [];
}
}各メソッドの解説
constructor(コンストラクタ)
スタックの最大サイズを受け取ります。引数が数値として無効な場合(NaNの場合)は、デフォルト値として10が設定されます。また、要素を格納するための空の配列 container を初期化します。
display()
現在スタックに格納されているすべての要素をコンソールに出力します。デバッグ時に内容を確認するのに便利です。
isEmpty() / isFull()
isEmpty() はスタックが空かどうかを、isFull() はスタックが最大サイズに達しているかどうかを判定し、真偽値を返します。
push(element)
新しい要素をスタックの一番上に追加します。追加前に満杯かどうかをチェックし、満杯の場合は「Stack Overflow!」というメッセージを出力して処理を中断します。
pop()
スタックの一番上にある要素を取り除きます。空のスタックに対して呼び出された場合は「Stack Underflow!」というメッセージを出力して処理を中断します。
peek()
スタックの一番上にある要素を、取り除かずに参照して返します。スタックが空の場合はエラーメッセージを表示します。
clear()
スタック内のすべての要素を削除し、初期状態に戻します。
実際の使用例
このスタッククラスは次のように使えます。
const stack = new Stack(5);
stack.push(10);
stack.push(20);
stack.push(30);
stack.display(); // [10, 20, 30]
console.log(stack.peek()); // 30
stack.pop();
stack.display(); // [10, 20]
console.log(stack.isEmpty()); // false
stack.clear();
console.log(stack.isEmpty()); // trueこのように、スタッククラスを実装しておけば、サイズ制限付きの安全なデータ管理が可能になり、あふれ(オーバーフロー)や空参照(アンダーフロー)といったエラーも適切にハンドリングできます。アルゴリズムの学習や実際のアプリケーション開発において、ぜひ活用してみてください。
-
JavaScriptのスタックデータ構造とは?LIFOの基本とクラス実装をわかりやすく解説
スタック(Stack)は、ほとんどのプログラミング言語で利用される抽象データ型(ADT:Abstract Data Type)の一つです。トランプのカードの山や皿の積み重ねのように、現実世界の「積み重ね」と同じように振る舞うことから、この名前が付けられました。 スタックの特徴:LIFO(後入れ先出し)構造 スタックの最大の特徴は、操作できるのが片方の端だけであるという点です。この特性により、スタックは LIFO(Last-In-First-Out:後入れ先出し) 型のデータ構造として動作します。つまり、最後に追加された要素が最初に取り出されます。 スタックの用語では、要素を挿入する操作を P
-
JavaScriptでスタックを実装する方法【サンプルコード付きで解説】
スタック(Stack)は、最後に追加した要素が最初に取り出される「LIFO(Last In, First Out)」方式の基本的なデータ構造です。本記事では、JavaScriptを使ってスタックを実装する方法を、ブラウザ上で実際に動作するサンプルコードとともにわかりやすく解説します。 スタックの基本操作 push:スタックの一番上に新しい要素を追加します。 pop:スタックの一番上から要素を取り出して削除します。要素がない場合はアンダーフローとして扱います。 display:スタック内に格納されているすべての要素を表示します。 サンプルコード 以下は、JavaScriptでスタックを実装し