thumbnail

[자료구조] 덱(Deque) | javascript

[자료구조] 덱(Deque) | javascript

📋 [ 자료구조 ] 시리즈 몰아보기 (4)

📚 덱(Deque)

deque

StackQueue를 합친 자료구조로 양방향에서 데이터의 입출력이 가능한 자료형이다. 실제 메모리에서 앞, 뒤를 구분하지는 않지만 편의상 deque의 앞, 뒤 모두 자료의 입출력이 가능하다고 표현한다. 구현해야할 기능은 다음과 같다.

  • push_head(item) : deque의 headitem삽입한다.
  • push_tail(item) : deque의 tailitem삽입한다.
  • pop_head() : head의 원소를 제거한다.
  • pop_tail() : tail의 원소를 제거한다.
  • print_head() : head의 원소를 출력한다.
  • print_tail() : tail의 원소를 출력한다.
  • rotate_left(n) : deque을 반시계방향으로 n회 회전한다.
  • rotate_right(n) : deque을 시계방향으로 n회 회전한다.
  • isEmpty() : deque이 비어있는지 조사한다.
  • clear() : deque을 초기화한다.
  • length() : deque의 크기를 출력한다.

js에서는 배열을 이용하여 간단히 구현 가능하다.


🖥️ 소스코드

          
1 const Deque = () => {
2 let store = [];
3
4 return {
5 // push
6 push_head(item) {
7 store = [item, ...store];
8 },
9 push_tail(item) {
10 store.push(item);
11 },
12 // pop
13 pop_head() {
14 store.shift();
15 },
16 pop_tail() {
17 store.pop();
18 },
19 // print
20 print_head() {
21 return store[0];
22 },
23 print_tail() {
24 return store[store.length - 1];
25 },
26 // rotate
27 rotate_left(n) {
28 if (!this.isEmpty()) {
29 let temp = null;
30 for (let i=0; i<n; i++) {
31 temp = store[0];
32 store.shift();
33 store.push(temp);
34 }
35 } else {
36 console.log("deque is Empty");
37 }
38 },
39 rotate_right(n) {
40 if (!this.isEmpty()) {
41 let temp = null;
42 for (let i=0; i<n; i++) {
43 temp = store[store.length - 1];
44 store.pop();
45 store = [temp, ...store]
46 }
47 } else {
48 console.log("deque is Empty");
49 }
50 },
51 // else
52 isEmpty() {
53 return store.length === 0 ? true : false;
54 },
55 clear() {
56 store.splice(0);
57 },
58 length() {
59 return store.length;
60 }
61 };
62 };
# 자료구조
# JS
# javascript
# 덱
# Deque

💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!

👨‍💻 관련 포스트