スタックは、LIFO の原則に従う線形データ構造です。 LIFO は後入れ先出しの略で、最後に追加されたアイテムが最初に削除されることを意味します。このデータ構造は、実際のスタック (例: クッキー ジャー内のクッキーのスタックまたは本棚上の書籍のスタック) との類推としてスタックと呼ばれます。スタックでは、挿入と抽出は一方の端、つまりスタックの一番上でのみ実行できます。たとえば、クッキーを食べたい場合、最初に一番上のものを取得し、次に 2 番目を取得します。
この投稿では、JavaScript でのスタックの実装について説明します。 JavaScript を使用しているので、JavaScript オブジェクトのサイズは動的に大きくなる可能性があるため、スタックのサイズについて心配する必要はありません。
JavaScript でのスタックの実装
JavaScript クラスを使用して、スタック データ構造を実装します。の スタック クラスのコンストラクターには、要素をスタックに格納するために使用される配列が含まれます。このクラスは、スタック内に格納されたデータを操作するために使用されるさまざまなメソッドも定義します。配列の最も基本的なメソッドは、 入れる() と エキス() スタックの一番上に要素を追加および削除するために使用されるメソッド。
の スタック クラスは、次のような他のメソッドも定義します ピーク() 、 isEmpty() 、 クリア() 、 印刷() と サイズ() 同じように:
クラススタック {
コンストラクタ ( ) {
this.elements = [ ] ;
}
/// アイテムをスタックの一番上に置きます
入れる ( エレメント ) {
this.elements.push ( エレメント ) ;
}
/// スタックの一番上からアイテムを削除します
エキス ( ) {
this.elements.pop ( ) ;
}
/// スタックの一番上の要素を返します
ピーク ( ) {
戻る this.elements [ this.elements.length - 1 ] ;
}
/// 小切手 もしも スタックが空です
が空です ( ) {
戻る this.elements.length == 0 ;
}
/// スタック全体を印刷します
印刷する ( ) {
為に ( させて 私= 0 ;私 < this.elements.length; i++ ) {
console.log ( this.elements [ 私 ] ) ;
}
}
/// を返します サイズ スタックの
サイズ ( ) {
戻る this.elements.length;
}
/// スタックをクリアします
クリア ( ) {
this.elements = [ ] ;
}
}
スタックからの要素のプッシュとポップ
スタックの最も基本的な操作は、スタックの一番上から要素を挿入および抽出することです。スタック クラスは、これらの操作のために 2 つのメソッドを提供します。
上記のコードの最初の行は、次の名前の新しいスタックを宣言します。 s .そうして 入れる() メソッドを使用して 4 つの要素をスタックに挿入し、そのうちの 2 つを エキス() 方法。
スタックから一番上の要素を取得する方法
の スタック クラスは ピーク() スタックから一番上の要素を取得するメソッド:
スタックが空かどうかを確認する方法は?
このクラスは、スタックが空かどうかを確認するために使用できるメソッドも定義します。
スタック全体を印刷するには?
の 印刷() メソッドを呼び出して、スタック全体を印刷できます
スタックのサイズを確認する方法は?
の サイズ() メソッドは、 。長さ スタックのサイズを取得するプロパティ:
スタック全体をクリアする方法は?
単純に呼び出す クリア() スタックのすべての要素を削除するメソッド:
結論
スタックは、ブラウザーの履歴、テキスト エディターの [元に戻す] ボタン、通話ログなど、多くの実際のアプリケーションで役立つデータ構造です。これらのアプリケーションはすべて LIFO の原則に従います。たとえば、ブラウザの戻るボタンで最後にアクセスしたページに戻り、通話ログの最初のエントリが常に最新の通話になります。
JavaScript でのスタックの実装は、組み込み済みであるため非常に簡単です。 押す と ポップ 配列のメソッド。この記事では、JavaScript でスタックを実装するプロセスを示します。