Computer Science/자료구조

[자료구조] Queue(큐) & Deque(덱)

2023. 3. 15. 01:40
목차
  1. Queue란?
  2. Queue 기본 구조
  3. Queue 기본 연산
  4. Queue의 형태
  5. Deque란?
  6. Deque vs Queue
  7. Deque 기본 연산

Queue란?

  • 선입선출 (First In First Out; FIFO) 자료구조
    • 먼저 들어온 데이터가 먼저 나가는 구조
  • 입력 순서대로 데이터 처리가 필요할 때 사용
    • BFS (Breath-First Search)

Queue 기본 구조


Queue 기본 연산

  • Queue 생성
    • 큐는 배열기반의 컬렉션 클래스를 사용하면 데이터를 꺼낼 때마다 빈 공간을 채우기 위해 데이터를 복사해야 하므로 LinkedList로 구현하는 것이 적합하다.
import java.util.LinkedList;
import java.util.Queue;

Queue queue = new LinkedList();
// Queue는 interface로 구현되어 있음. 따라서 바로 객체로 만들 수 없음. -> Queue queue = new Queue(); (X)
  • add(item) / offer(item) - 큐의 rear에 요소 추가
queue.add(1);
queue.offer(2);
  • poll() - 큐의 front에 있는 요소 반환하며 삭제
queue.poll();
  • peek() - 큐의 front에 있는 요소를 반환, 하지만 삭제는 하지 않는다. 스택과는 다르게 큐가 비어있으면 null을 반환한다.
queue.peek();
  • contains(item) - 큐 안에 요소가 있는지 확인
queue.contains(1);
  • isEmpty() - 큐가 비어있는지 확인
queue.isEmpty();
  • clear() - 큐의 모든 요소 삭제
queue.clear();

Queue의 형태

  1. 선형 큐
  2. 원형 큐

Deque란?

  • Double-Ended Queue 즉, 양쪽 끝에 추가/삭제가 가능하다.
  • 덱은 스택과 큐를 하나로 합쳐놓은 것과 같아서 스택으로 사용할 수 있고, 큐로 사용할 수도 있다.
Deque Queue Stack
offerLast() offer() push()
pollLast() - pop()
pollFirst() poll() -
peekFirst() peek() -
peekLast() - peek()

Deque vs Queue


Deque 기본 연산

  • Deque 생성
    • LinkedList와 ArrayDeque를 사용할 수 있다.
import java.util.LinkedList;
import java.util.Deque;

Deque deque = new LinkedList();
  • add(item) / offer(item) - 큐의 rear에 요소 추가
deque.add(1);
deque.offer(2);
  • poll() / pollFirst() - 큐의 front에 있는 요소 반환하며 삭제
    pollLast() - 큐의 rear에 있는 요소 반환하며 삭제
deque.poll();
deque.pollFirst();
deque.pollLast();
  • peek() / peekFirst() - 큐의 front에 있는 요소를 반환, 하지만 삭제는 하지 않는다.
    peekLast() - 큐의 rear에 있는 요소를 반환
deque.peek();
deque.peekFirst();
deque.peekLast();
  • contains(item) - 큐 안에 요소가 있는지 확인
deque.contains(1);
  • isEmpty() - 큐가 비어있는지 확인
deque.isEmpty();
  • clear() - 큐의 모든 요소 삭제
deque.clear();

참고: 자바의 정석

'Computer Science > 자료구조' 카테고리의 다른 글

[자료구조] 스택(Stack) & 큐(Queue)  (0) 2023.05.27
[자료구조] Array vs ArrayList vs LinkedList  (0) 2023.05.20
[자료구조] 연결리스트(LinkedList)  (0) 2023.05.20
[자료구조] 배열 (Array)  (0) 2023.05.18
[자료구조] 스택 (Stack)  (0) 2023.03.13
  1. Queue란?
  2. Queue 기본 구조
  3. Queue 기본 연산
  4. Queue의 형태
  5. Deque란?
  6. Deque vs Queue
  7. Deque 기본 연산
'Computer Science/자료구조' 카테고리의 다른 글
  • [자료구조] Array vs ArrayList vs LinkedList
  • [자료구조] 연결리스트(LinkedList)
  • [자료구조] 배열 (Array)
  • [자료구조] 스택 (Stack)
dbssk
dbssk
K.Back-enddbssk 님의 블로그입니다.
dbssk
K.Back-end
dbssk
  • 분류 전체보기 (220)
    • 끄적 (0)
    • TIL (8)
      • Trouble Shooting (1)
    • Programmers (94)
      • Lv.0 (29)
      • Lv.1 (40)
      • Lv.2 (25)
    • 백준 (15)
    • 구름 (0)
    • Computer Science (79)
      • 컴퓨터 구조 (3)
      • Operating System (18)
      • 알고리즘 (9)
      • 자료구조 (11)
      • Database (10)
      • Network (8)
      • Web (12)
      • Design Pattern (8)
    • Spring (2)
    • Languages (13)
      • Java (13)
    • 북 스터디 (9)
      • 스프링 부트 핵심 가이드 (9)
      • 자바 코딩 인터뷰 완벽 가이드 (0)
    • 프론트엔드 (0)

인기 글

최근 글

태그

  • 자료구조
  • 백엔드스쿨
  • 개발자이력서
  • stack
  • 개발자취준
  • spring
  • hash
  • 프로그래머스
  • 개발자취업
  • LV.1
  • 백준
  • 코딩테스트
  • 개발자포트폴리오
  • 스택
  • java
  • 백엔드공부
  • 해시
  • Lv.0
  • 배열
  • LV.2
hELLO · Designed By 정상우.
dbssk
[자료구조] Queue(큐) & Deque(덱)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.