Stack & Queue 3

Sasha Park·2021년 9월 16일
0

Class를 이용하여 Queue를 구현해보자. 먼저 넣은 데이터가 먼저 나가는 (First In Last Out, FILO) stack 과는 다르게 먼저 들어온 데이터가 먼저 나가는 형태 (First In First Out, FIFO)를 지니고 있다.

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] 앞에서 부터 요소가 삭제됨을 확인할 수 있다.
profile
'어?' 에서 '아!'가 되는 순간을 즐기는 개발자입니다.

0개의 댓글