[JS] 자바스크립트로 덱(Deque) 구현하기
2022. 4. 13. 01:12ㆍFront-end/JavaScript
덱(Deque)이란?
Double-ended queue의 약자로 삽입과 삭제가 양쪽 끝에서 모두 발생할 수 있는 선형 자료구조이다.
자바스크립트를 이용해서 양방향 큐(Deque)를 구현해보자.
구현할 메서드(method)
데이터 전체 반환
Deque.getBuffer()
데이터가 비어 있는지 확인
Deque.isEmpty()
앞쪽 데이터 추가 / 삭제
Deque.pushFront() / Deque.popFront()
뒤쪽 데이터 추가 / 삭제
Deque.pushBack() / Deque.popBack()
가장 앞쪽 데이터 반환
Deque.front()
가장 뒤쪽 데이터 반환
Deque.back()
데이터 개수 확인
Deque.size()
데이터 전체 삭제
Deque.clear()
양방향 큐 구현 - getBuffer(), isEmpty()
// Deque(Double-ended queue) 생성자 함수
function Deque(array = []) {
this.array = array;
}
// 객체 내 테이터 셋 반환
Deque.prototype.getBuffer = function () {
return this.array.slice();
};
// 데이터가 비어 있는지 확인
Deque.prototype.isEmpty = function () {
return this.array === 0;
};
let dq = new Deque([1, 2, 3]);
console.log(dq); // Deque { array: [ 1, 2, 3 ] }
let data = dq.getBuffer();
console.log(data === dq.array); // false
console.log(data); // false
console.log(dq.isEmpty()); // [ 1, 2, 3 ]
console.log(Object.getOwnPropertyDescriptors(Deque.prototype));
// {
// constructor: {
// value: [Function: Deque],
// writable: true,
// enumerable: false,
// configurable: true
// },
// getBuffer: {
// value: [Function (anonymous)],
// writable: true,
// enumerable: true,
// configurable: true
// },
// isEmpty: {
// value: [Function (anonymous)],
// writable: true,
// enumerable: true,
// configurable: true
// }
// }
양방향 큐 구현 - pushFront(), popFront(), pushBack(), popBack()
// 앞쪽 데이터 추가
Deque.prototype.pushFront = function (element) {
return this.array.unshift(element);
};
// 앞쪽 데이터 삭제
Deque.prototype.popFront = function () {
return this.array.shift();
};
// 뒤쪽 데이터 추가
Deque.prototype.pushBack = function (element) {
return this.array.push(element);
};
// 뒤쪽 데이터 삭제
Deque.prototype.popBack = function () {
return this.array.pop();
};
let dq = new Deque([1, 2, 3]);
console.log(dq); // Deque { array: [ 1, 2, 3 ] }
dq.pushFront(0);
dq.pushBack(4);
console.log(dq); // Deque { array: [ 0, 1, 2, 3, 4 ] }
dq.popFront();
dq.popBack();
console.log(dq); // Deque { array: [ 1, 2, 3 ] }
양방향 큐 구현 - front(), back(), size(), clear()
// 가장 앞쪽 데이터 반환
Deque.prototype.front = function () {
return this.array.length === 0 ? undefined : this.array[0];
};
// 가장 뒤쪽 데이터 반환
Deque.prototype.back = function () {
return this.array.length === 0
? undefined
: this.array[this.array.length - 1];
};
// 데이터 개수 확인
Deque.prototype.size = function () {
return this.array.length;
};
// 데이터 전체 삭제
Deque.prototype.clear = function () {
this.array = [];
};
let dq = new Deque([1, 2, 3]);
console.log(dq); // Deque { array: [ 1, 2, 3 ] }
console.log(dq.front()); // 1
console.log(dq.back()); // 3
console.log(dq.size()); // 3
dq.clear();
console.log(dq); // Deque { array: [] }
반응형
'Front-end > JavaScript' 카테고리의 다른 글
자바스크립트의 ES(ECMAScript)란? - ES5/ES6 (0) | 2022.08.15 |
---|---|
자바스크립트(JavaScript) 언어의 특성 몇 가지 정리 (0) | 2022.08.11 |
[JS] 자바스크립트로 원형 큐(Circular Queue) 구현하기 (0) | 2022.04.12 |
[JS] 자바스크립트로 우선순위 큐(Priority Queue) 구현하기 (0) | 2022.04.10 |
[JS] 비트(Vite)란? - 비트 알아보기 (0) | 2022.04.09 |