본문 바로가기

Basic/자료구조,알고리즘

Deque의 개념과 구현

반응형

1. Deque(Double-Ended Queue)이란?


한 쪽 끝으로만 추가/삭제할 수 있는 Queue와 달리, Deque는 양쪽 끝에 추가/삭제가 가능하


다. Deque는 인터페이스로서 자바에서 구현된 클래스는 ArrayDeque과 LinkedList 등이 있다.



덱은 스택으로 사용할 수도 있고, 큐로 사용할 수도 있다. 그래서 덱의 구현에 가장 대표적인


자료구조는 앞에서 보았던 양방향 연결리스트이다.



2. 자바의 Deque 주요 메소드


https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Deque.html


Method

 Description

boolean offerLast(E e)

 Deque의 front에 엘리먼트를 삽입한다.

boolean offerFirst(E e)

 Deque의 rear에 엘리먼트를 삽입한다.

E pollFirst()

덱의 첫번째 엘리먼트를 반환+삭제한다. 비어있다면 null 반환.

E pollLast()

덱의 마지막 엘리먼트를 반환+삭제한다. 비어있다면 null 반환.

peekFirst()

덱의 첫번째 엘리먼트를 반환한다. 비어있다면 null 반환.

peekLast()

덱의 마지막 엘리먼트를 반환한다. 비어있다면 null 반환.

int size()

덱의 엘리먼트 갯수를 리턴한다.


3. 자바의 Deque 사용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package Deque;
import java.util.LinkedList;
import java.util.Deque;
public class LinkedListDequeApi {
    public static void main(String[] args) {
        Deque<String> Deque = new LinkedList();
        //Deque 인터페이스를 구현한 LinkedList
        System.out.println("= java Deque api offer=");
        
        Deque.offerLast("3");
        Deque.offerLast("4");
        Deque.offerFirst("2");
        Deque.offerFirst("1");
        
        System.out.println("= java Deque api peekFirst=");
        System.out.println(Deque.peekFirst());

  System.out.println("= java Deque api peekLast=");
        System.out.println(Deque.peekLast());
        
        System.out.println("= java Deque api poll=");
        
        while(!Deque.isEmpty()) {
            System.out.println(Deque.pollFirst());
            //System.out.println(Deque.pollLast());
        }
    }
}

cs


4. Deque 직접구현


Deque은 직접구현은 앞서 구현한 양방향 연결리스트와 거의 같기 때문에 앞을 참고하자.


https://cg-developer.tistory.com/53?category=764878



반응형

'Basic > 자료구조,알고리즘' 카테고리의 다른 글

우선순위 큐와 힙  (0) 2019.01.09
트리  (0) 2019.01.09
Queue의 다양한 구현  (0) 2018.12.08
Queue - 큐의 개념과 특성들  (0) 2018.12.08
Stack의 다양한 구현  (0) 2018.12.07