[JS PS] JavaScript 덱(Deque) 구현 TOC
deque이란?
- double-ended Queue의 약자
- 스택과 큐를 합친 자료구조
deque 구현
class Deque {
constructor() {
this.arr = [];
this.head = 0;
this.tail = 0;
}
pushleft(item) {
if (this.arr[0]) {
for (let i= this.arr.length; i >0; i--) {
this.arr[i] = this.arr[i-1];
}
}
this.arr[this.head] = item;
this.tail++;
}
push(item) {
this.arr[this.tail++] = item;
}
popleft(item) {
const result = this.head >= this.tail ? this.arr[this.head++] : null;
return result;
}
pop() {
const result = this.head >= this.tail ? this.arr[--this.tail] : null;
return result;
}
}
deque 사용
let deque = new Deque();
deque.push(1);
deque.push(2);
deque.push(3);
deque.popleft();
deque.pop();
REFERENCE