JSデータ構造とアルゴリズム(6)


スタックとキュー



スタック:下部に閉じた円柱、LIFO
例)ブラウザ履歴、前の操作を取り消す
Q:前後開口円柱、FIFO
レストランアプリ
では、どのようにして構造を作成しますか?
アレイの利点:相互に関連付けられているため、高速ですが、割り当てられたメモリがすべて使用されている場合は、
コピーするから、もっと使えます.
キューは、前の要素を削除するときにインデックスを再調整する必要があるため、O(n)になります.

インプリメンテーション


スタック

class Node {
  constructor(value){
    this.value = value;
    this.next = null;
  }
}

class Stack {
  constructor(){
    this.top = null;
    this.bottom = null;
    this.length = 0;
  }
  peek() {
    // stack에 쌓인 가장 마지막 녀석을 확인하는 메소드
    return this.top;
  }
  push(value){
    const newNode = new Node(value);
    
    if (this.length === 0) {
      this.top = newNode;
      this.bottom = newNode;
    } else {
      const holdingPointer = this.top;
      this.top = newNode;
      this.top.next = holdingPointer;
    }
    this.length++;
    return this;
  }
  pop(){
    if (!this.top) return null;
    if (this.top === this.bottom) {
      this.bottom = null;
    }
    this.top = this.top.next;
    this.length--;
    return this;
  }
  //isEmpty
}

リファレンス


https://soldonii.tistory.com/75?category=862199