JavaScriptのスタックから要素を覗き見る:peek操作の実装方法
JavaScriptにおけるシンプルなスタッククラス
まず、JavaScriptでシンプルなスタッククラスを考えてみましょう。スタックは「後入れ先出し(LIFO:Last In First Out)」と呼ばれるデータ構造で、最後に追加した要素が最初に取り出されるという特徴があります。
実装例
class Stack {
constructor(maxSize) {
// 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();
}
}isFullメソッドは、コンテナの長さがmaxSize以上であるかどうかを判定し、その結果を返します。isEmptyメソッドは、コンテナのサイズが0かどうかをチェックします。さらに、pushとpopは、それぞれスタックへの要素の追加と削除を行うためのメソッドです。
peek操作の追加
ここでは、このクラスにPEEK(ピーク)操作を追加していきます。スタックに対する「peek」とは、配列の先頭(最上位)にある値を取得することを意味します。つまり、要素を取り除かずに、一番上に何があるかだけを確認する操作です。peekメソッドは次のように実装できます。
peek() {
if (this.isEmpty()) {
console.log("Stack Underflow!");
return;
}
return this.container[this.container.length - 1];
}動作確認
この関数が正しく動作しているかどうかは、以下のコードで確認できます。
let s = new Stack(2); s.peek(); s.push(10); console.log(s.peek());
出力
実行すると、次のような出力が得られます。
Stack Underflow! 10
最初のs.peek()呼び出し時点ではスタックが空のため「Stack Underflow!」と表示され、その後10をpushしてから再度peekを呼び出すと、スタックの先頭要素である10が返されていることがわかります。このようにpeekを使えば、スタックの中身を壊すことなく、安全に先頭の値を参照できます。
-
JavaScriptでリンクリストから要素を削除する方法
リンクリストから要素を削除する基本の考え方 リンクリスト(連結リスト)から要素を削除する処理は非常にシンプルです。削除したいノードへの参照を失う(参照を切り離す)だけで実現できます。ただし、削除する位置によって処理が異なるため、次の3つのケースを考慮する必要があります。 ケース1:先頭(ヘッド)から削除する場合 先頭の要素を削除する場合は、head = head.next と代入するだけでOKです。これにより最初のノードへの参照が失われ、headは2番目のノードを指すようになります。 ケース2:末尾(テール)から削除する場合 末尾の要素を削除する場合は、最後から2番目のノードの node.ne
-
JavaScriptでスタックを実装する方法【サンプルコード付きで解説】
スタック(Stack)は、最後に追加した要素が最初に取り出される「LIFO(Last In, First Out)」方式の基本的なデータ構造です。本記事では、JavaScriptを使ってスタックを実装する方法を、ブラウザ上で実際に動作するサンプルコードとともにわかりやすく解説します。 スタックの基本操作 push:スタックの一番上に新しい要素を追加します。 pop:スタックの一番上から要素を取り出して削除します。要素がない場合はアンダーフローとして扱います。 display:スタック内に格納されているすべての要素を表示します。 サンプルコード 以下は、JavaScriptでスタックを実装し