큐는 FIFO 원칙을 따르는 선형 자료구조.
First in First Out
가장먼저 들어간 데이터가 가장 먼저 나온다.
큐는 스택과 마찬가지로 추상 자료형이다.
요소 추가 => enqueue
요소 제거 => dequeue
추가되는 방향과 제거되는 방향이 같다.
class Queue {
constructor() {
this._items = [];
}
enqueue(item) {
this._items.push(item);
}
dequeue() {
if(this.isEmpty()) {
console.log("Queue is empty.");
return;
}
return this._items.shift();
}
isEmpty() {
return this._items.length === 0;
}
size() {
return this._items.length;
}
}
const queue = new Queue();
queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);
console.log(queue) // [10,20,30]
queue.deququ();
console.log(queue); // [20,30]
queue.size(); // 2
enqueue는 일반적으로 O(1) 시간 복잡도를 가진다.
dequeue는 일반적으로 O(n) 시간 복잡도를 가진다.
배열 말고 연결 리스트를 사용한다면 O(1)를 가질 수 있다.