JavaScriptでスタックから要素をポップ(POP)する方法
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);
}
}
ここでisFull関数は、コンテナ配列の長さがmaxSize以上であるかどうかを判定し、その結果を返します。isEmpty関数は、コンテナのサイズが0であるかどうかを確認します。そしてpush関数は、新しい要素をスタックに追加するために使用されます。
このセクションでは、このクラスにPOP操作を追加していきます。スタックから要素をポップするとは、スタックのトップから要素を取り除くことを意味します。ここでは、コンテナ配列の末尾をスタックのトップとして扱い、すべての操作をそれに基づいて行います。そのため、pop関数は次のように実装できます。
例
pop() {
// スタックが空かどうかをチェック
if (this.isEmpty()) {
console.log("Stack Underflow!");
return;
}
this.container.pop();
}
pop関数では、まずisEmptyを使ってスタックが空かどうかを確認しています。空のスタックから要素を取り除こうとすると「アンダーフロー(Underflow)」と呼ばれるエラー状態になるため、事前チェックが重要です。問題がなければ、配列の組み込みメソッドであるpop()を呼び出すことで、末尾(トップ)の要素を取り除きます。
この関数が正しく動作しているかどうかは、以下のコードで確認できます。
例
let s = new Stack(2); s.display(); s.pop(); s.push(20); s.push(30); s.pop(); s.display();
出力
これを実行すると、次の出力が得られます。
[] Stack Underflow! [ 20 ]
出力の流れを見てみましょう。まず初期化直後のスタックは空なので[]と表示され、続いて空の状態でpopを呼び出したため「Stack Underflow!」が出力されます。その後、20と30をプッシュし、1つポップすると、最後に残った要素は20のみとなり[ 20 ]と表示されます。このように、pop操作によってスタックのトップ(配列の末尾)から要素が正しく取り除かれていることが確認できます。
-
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でスタックを実装し