JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

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操作によってスタックのトップ(配列の末尾)から要素が正しく取り除かれていることが確認できます。

  1. JavaScriptでリンクリストから要素を削除する方法

    リンクリストから要素を削除する基本の考え方 リンクリスト(連結リスト)から要素を削除する処理は非常にシンプルです。削除したいノードへの参照を失う(参照を切り離す)だけで実現できます。ただし、削除する位置によって処理が異なるため、次の3つのケースを考慮する必要があります。 ケース1:先頭(ヘッド)から削除する場合 先頭の要素を削除する場合は、head = head.next と代入するだけでOKです。これにより最初のノードへの参照が失われ、headは2番目のノードを指すようになります。 ケース2:末尾(テール)から削除する場合 末尾の要素を削除する場合は、最後から2番目のノードの node.ne

  2. JavaScriptでスタックを実装する方法【サンプルコード付きで解説】

    スタック(Stack)は、最後に追加した要素が最初に取り出される「LIFO(Last In, First Out)」方式の基本的なデータ構造です。本記事では、JavaScriptを使ってスタックを実装する方法を、ブラウザ上で実際に動作するサンプルコードとともにわかりやすく解説します。 スタックの基本操作 push:スタックの一番上に新しい要素を追加します。 pop:スタックの一番上から要素を取り出して削除します。要素がない場合はアンダーフローとして扱います。 display:スタック内に格納されているすべての要素を表示します。 サンプルコード 以下は、JavaScriptでスタックを実装し