Stack, Queue


Stack


材料の構造を一端からのみ挿入および削除できます(LIFO)
プッシュ(push)とポップ(pop)を使って資料を入れてから出します.
上図に示すように、出口が1つしかない構造です.上に蓄積すると、最も遅く蓄積されたデータが最初に流出します.callスタックでは、メソッドが呼び出され、終了するプロセスはスタックと似ています.

Diagram



Operation

  • push
  • スタックに入力データ
  • pop
  • スタックにおける最後のデータ出力
  • size
  • スタックサイズ
  • purpose

  • LIFO(後進先出)構造で、入力が遅いデータから出力を開始する.
  • コールスタック
  • 寿司屋の皿(?)
  • implement

    class Stack {
      constructor() {
        this.stack = [];
      }
    
      push(element) {
        this.stack.push(element);
      }
      pop() {
        return this.stack.pop();
      }
      size() {
        return this.stack.length;
      }
    }
    
    const stack = new Stack();
    
    stack.push(1); // [1]
    stack.push(2); // [1, 2]
    stack.push(3); // [1, 2, 3]
    console.log(stack); 
    console.log(stack.size());
    
    stack.pop(); // [1, 2]
    stack.pop(); // [1]
    stack.pop(); // []
    console.log(stack);
    

    Queue

  • 日常生活に並ぶ
  • Diagram



    Operation

  • head (front, first)
  • dequeueのときに出力される部分
  • tail (rear, back)
  • enqueue入力部
  • enqueue
  • tailに新しいデータ
  • を入力
  • dequeue
  • headのデータ
  • の出力と削除

    Purpose

  • FIFO構造で、データの入出力に使用されます.
  • implement

    class Queue {
      constructor() {
        this.queue = [];
      }
    
      enqueue(element) {
        this.queue.push(element);
      }
    
      dequeue() {
        this.queue.shift();
      }
    }
    
    const queue = new Queue();
    queue.enqueue(1);
    queue.enqueue(2);
    queue.enqueue(3);
    console.log(queue); // [1, 2, 3]
    
    queue.dequeue(); // [2, 3]
    queue.dequeue(); // [3]
    queue.dequeue(); // []
    
    console.log(queue); // []