Stack & Queue 3
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] 앞에서 부터 요소가 삭제됨을 확인할 수 있다.
Author And Source
이 문제에 관하여(Stack & Queue 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sashainspb/Stack-Queue-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)