본문 바로가기
개념공부

[Deque] queue(큐)와 stack(스택)을 둘 다 사용할 수 있는 deque(덱)

by 29살아저씨 2021. 11. 4.
반응형

* Deque란?

- 덱은 Double-Ended Queue의 줄임말로 큐의 양쪽에 데이터를 넣고 뺼 수 있는 형태의 자료구조이다.

   하나의 자료구조에 queue와 stack을 사용할 수 있다 생각하면 된다.

덱(Deque)은 어떤 쪽으로 입력하고 어떤 쪽으로 출력하느냐에 따라서 스택(Stack)으로 사용할 수도 있고, 큐(Queue)로도 사용할 수 있다. 특히 한쪽으로만 입력 가능하도록 설정한 덱을 스크롤(scroll)이라고 하며, 한쪽으로만 출력 가능하도록 설정한 덱을 셸프(shelf)라고 한다.

* Deque 라이브러리 선언 방법

자바에서의 Deque는 인터페이스로 구현되어 있다.

Deque<String> deque = new ArrayDeque<>();
Deque<String> deque = new LinkedBlockingDeque<>();
Deque<String> deque = new ConcurrentLikedDeque<>();
Deque<String> deque = new LinkedList<>();

* Deque 값 추가

'

덱의 앞부분에 데이터 추가 : deque.addFirst() / deque.offerFirst()

덱의 뒷부분에 데이터 추가 : deque.add() / deque.offer() / deque.addLast() / deque.offerLast()

 

* Deque 값 제거

덱의 앞부분에 데이터 제거 : deque.remove() / deque.poll() / deque.removeFirst() / deque.pollFirst()

덱의 뒷부분에 데이터 제거 : deque.removeLast() / deque.pollLast()

 

* Deque 값 확인

덱의 앞부분 데이터 확인 : deque.getFirst() / deque.peek() / deque.peekFirst()

덱의 뒷부분 데이터 확인 : deque.getLast() / deque.peekLast()

 

* Deque 순회

for문과 Iterator를 이용하여 Deque에 있는 값들을 순회할 수 있다.

// for문을 이용한 순회
for(String item : deque){
	System.out.println(item);
}

// iterator를 이용한 순회
Iterator<String> iterator = deque.iterator();
while(iterator.hasNext()){
	String item = iterator.next();
	System.out.println(item);
}

// 역순회
Iterator<String> reverseIterator = deque.descendingIterator();
while(reverseIterator.hasNext()){
	String item = reverseIterator.next();
	System.out.println(item);
}

 

참고 : https://hbase.tistory.com/128

반응형

댓글