JavaScriptでスタック(Stack)クラスを実装する方法
スタックは「後入れ先出し(LIFO:Last In First Out)」と呼ばれるデータ構造で、最後に追加した要素が最初に取り出される仕組みです。JavaScriptの配列(Array)は実はスタックに必要な機能をすべて備えていますが、今回は学習を兼ねて、独自のStackクラスをゼロから実装してみましょう。
今回作成するクラスには、次のメソッドを持たせます。
- push(element):スタックの先頭に要素を追加する
- pop():先頭の要素を取り除き、その要素を返す
- peek():スタックの先頭にある要素を参照する
- isFull():スタックが要素数の上限に達しているかを判定する
- isEmpty():スタックが空かどうかを判定する
- clear():すべての要素を削除する
- display():配列の内容をすべて表示する
Stackクラスの基本構造
まずは、スタックの最大サイズを受け取るコンストラクタと、ほかのメソッドを実装する際に役立つヘルパー用のdisplay()を持つ、シンプルなクラスを定義することから始めます。あわせて、スタックが満杯か空かを判定するisFull()とisEmpty()も定義しておきましょう。
isFull()メソッドは、内部配列(container)の長さがmaxSize以上であるかどうかを確認して結果を返す、シンプルな実装です。
isEmpty()メソッドは、内部配列のサイズが0であるかどうかをチェックします。
これら2つのメソッドは、後ほどpushなどの操作を定義するときに活躍します。以降で定義するメソッドは、すべてこのStackクラスの中に記述していきます。
コード例
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);
}
}ポイント解説
constructorでは、引数として最大サイズを受け取ります。数値が指定されなかった場合(isNaNがtrueの場合)は、デフォルト値として10を設定しています。そして、スタックの中身を保持するための空の配列this.containerを初期化します。
push(element)では、要素を追加する前に必ずisFull()を呼び出してスタックが満杯でないかを確認します。もし上限に達していれば「Stack Overflow!」とコンソールに出力し、それ以上の追加を防ぎます。満杯でなければ、配列の末尾に要素を追加します。配列の末尾への追加・削除をスタックの「先頭」とみなすことで、LIFO構造を簡単に実現できるのがポイントです。
-
JavaScriptでカスタム画像スライダーを作成する方法【初心者向け解説付き】
Webサイトに動きを加える定番パーツのひとつが「画像スライダー(カルーセル)」です。ライブラリを使わなくても、HTML・CSS・JavaScriptの基本だけで、前後ボタンとナビゲーションドット付きのカスタムスライダーを簡単に作ることができます。この記事では、実際に動作する完全なサンプルコードを紹介しながら、それぞれの仕組みをわかりやすく解説します。完成形のサンプルコード以下のコードをそのままHTMLファイルとして保存し、ブラウザで開くと画像スライダーが動作します。<!DOCTYPE html> <html> <head> <meta name=&qu
-
JavaScriptでスタックを実装する方法【サンプルコード付きで解説】
スタック(Stack)は、最後に追加した要素が最初に取り出される「LIFO(Last In, First Out)」方式の基本的なデータ構造です。本記事では、JavaScriptを使ってスタックを実装する方法を、ブラウザ上で実際に動作するサンプルコードとともにわかりやすく解説します。 スタックの基本操作 push:スタックの一番上に新しい要素を追加します。 pop:スタックの一番上から要素を取り出して削除します。要素がない場合はアンダーフローとして扱います。 display:スタック内に格納されているすべての要素を表示します。 サンプルコード 以下は、JavaScriptでスタックを実装し