Stack & Queue 3


Classを使用してQueueを実装しましょう.先入データ先出スタックとは異なり、先入データ先出スタックの形式を有する.
class Queue {
  constructor() {
    this.storage = {}; // 데이터를 넣을 객체를 만들어주자.
    this.front = 0; // 배출할 데이터를 가르키는 인덱스
    this.rear = 0; // 삽입한 데이터를 가르키는 인덱스
  }
  
  size() { 
    return this.rear - this.front;
  } 
  
  enqueue(element) { 
    this.storage[this.rear] = element;
    this.rear += 1;
  }
  // { 0: Sasha, 1: Lisa, 2: Coco} 와 같은 형태로 데이터가 삽입되며,  
  // 데이터를 삽입할 때마다 다음 데이터 key값을 미리 넣어주기 위해 +1을 해주자.  
  
  dequeue() {
    if (this.size() === 0) {
      return;
    }
    const result = this.storage[this.front];
    delete this.storage[this.front];
    this.front += 1;
    return result;
  }
  
}
// 더 배출시킬 데이터가 없다면 undefined를 리턴한다. stack과 마찬가지로, 
// 배출시킬 데이터를 result에 할당시켜주고, delete method를 이용해서 
// queue 내에서 삭제해주자. 그리고 다음 배출시킬 데이터의 인덱스를 가르키는 
// front 값을 +1 하자. 최종적으로 queue에서 배출된 데이터를 리턴해준다. 
今回は配列をチェックし、簡単にqueueを実現しました.
const queue = []; 

queue.push(1);
queue.push(2);
queue.push(3);
queue.push(4);
queue.push(5);

console.log(queue); // [1, 2, 3, 4, 5]

queue.shift();
queue.shift();

console.log(queue); // [3, 4, 5] 앞에서 부터 요소가 삭제됨을 확인할 수 있다.