01. Queue (큐)

  • 데이터가 입력된 순서대로 처리되는 자료구조
  • 데이터 중 가장 앞에 있는 요소를 front, 가장 뒤에 있는 요소를 rear라고 한다
  • enqueue: item을 추가한다.
  • dequeue: item을 삭제한다.

02. Class Queue 정의

    class Queue {
        // queue 생성자
        constructor() {
            this.storage = {};
            this.front = 0;
            this.rear = 0;
        }
        
        // rear와 front로 queue의 사이즈를 구하기
        size() {
            return this.rear - this.front;
        }
        
        // queue에 item을 추가한다
        // this.rear는 앞으로 추가될 엘리먼트의 인덱스를 나타냄
        enqueue(item) {
            this.storage[this.rear] = item;
            this.rear += 1;                    
        }
        
        // queue에서 item를 제거 한 뒤 해당 item를 반환
        // this.front에 해당하는 item은 큐에서 삭제하며 반환
        dequeue() {
            if (this.size() === 0) {      // size가 0이라면 아무 일도 일어나지 않음
                return;
            }

            const result = this.storage[this.front];
            delete this.storage[this.front];
            this.front += 1;
            return result;
        }
    }