[자료구조] 덱(Deque) | javascript
[자료구조] 덱(Deque) | javascript
📋 [ 자료구조 ] 시리즈 몰아보기 (4)
📚 덱(Deque)
Stack
과 Queue
를 합친 자료구조로 양방향
에서 데이터의 입출력이 가능한 자료형이다. 실제 메모리에서 앞, 뒤를 구분하지는 않지만 편의상 deque의 앞, 뒤 모두 자료의 입출력이 가능하다고 표현한다. 구현해야할 기능은 다음과 같다.
push_head(item)
: deque의head
에item
을삽입
한다.push_tail(item)
: deque의tail
에item
을삽입
한다.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 | |
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
👨💻 관련 포스트
[자료구조] 스택(Stack) | javascript
[자료구조] 스택(Stack) | javascript
javascript로 이해하는 자료구조 [스택(stack)] : 스택(stack)은 데이터를 입력할 수 있는 선형 자료형으로 선입후출의 구조를 가지며 ctrl+z와 같은 기능에서 요구되는 자료형이다. javascript에서는 배열을 이용해 손쉽게 구현할 수 있다.
2023-04-20
[자료구조] 큐(Queue) | javascript
[자료구조] 큐(Queue) | javascript
javascript로 이해하는 자료구조 [큐(queue)] : 큐(queue)는 데이터를 입력할 수 있는 선형 자료형으로 선입선출의 구조를 가진다. 버퍼링과 같은 기능에서 요구되는 자료형이다. javascript에서는 배열을 이용해 손쉽게 구현할 수 있다.
2023-04-20
[자료구조] 연결리스트(linked_list) | javascript
[자료구조] 연결리스트(linked_list) | javascript
javascript로 이해하는 자료구조 [연결리스트(linked-list)] : 연결리스트(linked-list)는 리스트의 일종으로 노드(node)와 데이터가 포인터(pointer)를 가지고 한 줄로 이어져있는 형태를 띈다. 자료의 추가 및 삭제 시간복잡도가 O(1)이나 다른 자료형보다 저장공간을 많이 차지하는 단점이 있다.
2023-04-25
💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!