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;
}
}