- Double-ended Queue, 덱이라고도 부르며, 양쪽 끝에서 데이터를 추가, 삭제할 수 있는 구조
특징
- front, rear 양쪽에서 추가, 삭제가 가능하다
- Stack과 Queue 특징을 모두 갖춘 구조로, 특정 상황에 따라 유연하게 사용할 수 있다
- 특정 문자열이 앞뒤로 동일한지를 체크할 때 사용, front와 rear를 비교하면 된다
장점과 단점
- 장점 : 양쪽에서 추가, 삭제가 가능하여, 유연하게 데이터 처리를 할 수 있다
- 단점 : 구현이 복잡하고, 사용에 따라 성능을 고려해야 한다
예시 코드
class Deque {
constructor() {
this.elements = [];
}
addFront(item) {
this.elements.unshift(item);
}
addRear(item) {
this.elements.push(item);
}
removeFront() {
return this.elements.shift();
}
removeRear() {
return this.elements.pop();
}
peekFront() {
return this.elements[0];
}
peekRear() {
const size = this.elements.length;
return this.elements[size - 1];
}
}
const deque = new Deque();
deque.addFront(1);
deque.addRear(2);
deque.addFront(3);
deque.removeRear();
console.log(deque.peekFront());
console.log(deque.peekRear());