JavaScriptによるStackの実装


STACKとは?


これは,一端からしか資料を入れて取り出すことができないLIFO(Last In First Out)形式の資料構造である.

STACKでの演算

  • push:要素をスタックに入れます.
  • pop:スタックの上部にある要素を返して削除します.時間複雑度O(1)
  • peek:スタックの最上位要素を返します.時間複雑度O(1)
  • empty:スタックが空であるかどうかを確認します.時間複雑度O(1)
  • size:スタックのサイズを返します.時間複雑度O(1)またはO(n)
  • STACKの実装

    class Stack {
      constructor() {
        this.stack = new Map();
        this.index = 0; //push, pop할 때마다 증가 및 감소
      }
    
      size() {
        return this.stack.size;
      }
    
      empty() {
        return this.stack.size > 0 ? false : true;
      }
    
      push(element) {
        this.stack.set(this.index++, element);
      }
    
      pop() {
        let temp;
        if (this.stack.size > 0) {
          temp = this.stack.get(this.index - 1); 
          //push연산 후 index를 증가시키기 때문에 현재 index-1 위치의 값을 출력함
          this.stack.delete(this.index-- - 1);
        }
        return temp;
      }
    
      peek() {
        const temp = this.stack.get(this.index - 1);
    
        return temp;
      }
    }
    - constructor
    クラスが=>コンストラクション関数として宣言され、インスタンス化されている場合は、オブジェクトの作成時にオブジェクトの初期値を設定できます.
    - this.stack
    =>JavaScriptのMapデータ型を使用してスタックを構築
    - this.index
    =>indexの値はpush、pop、peek演算に使用されます.
    console.log(stack);
    stack.push(5);
    stack.push(5);
    console.log(stack);
    console.log(stack.peek(), stack.pop(), stack.size(), stack.empty());
    結果は以下の通りです.