Stack / Queue / Deque

tryoo0607·2025년 8월 6일
post-thumbnail

들어가며

알고리즘 공부 중 자료구조 Stack / Queue / Deque를 비교하였습니다.

공통점

  1. 모두 선형 자료구조 (Linear Data Structure)
  • 데이터가 1차원적으로 "순서대로" 저장됨 (트리/그래프처럼 복잡한 구조 아님).
  • 삽입한 순서에 따라 접근 가능.

  1. 데이터 삽입/삭제 중심
  • 공통적으로 삽입(offer/push)과 삭제(poll/pop) 메커니즘을 가짐.
  • 위치(앞/뒤/위)에 따라 동작 방식만 달라질 뿐, 기본 개념은 동일.


차이점

구분Stack (스택)Queue (큐)Deque (덱)
동작 원리LIFO (후입선출)FIFO (선입선출)LIFO + FIFO (양쪽 입출력 가능)
삽입 위치한쪽(top)뒤(rear)앞(front), 뒤(rear) 모두 가능
삭제 위치한쪽(top)앞(front)앞(front), 뒤(rear) 모두 가능
제한단방향, top에서만 조작 가능단방향, 앞 → 뒤 흐름만 가능제약 없음, 가장 유연
주요 메서드push, pop, peekoffer, poll, peekofferFirst/Last, pollFirst/Last, peekFirst/Last


Stack (스택)

특징

한쪽(top)에서만 데이터 삽입/삭제 가능

동작 원리

LIFO (후입선출) → 나중에 들어간 게 먼저 나온다.

제한

삽입/삭제 위치가 단방향(끝 하나)으로 고정됨.

메서드

  • push(E e) → 맨 위에 삽입
  • pop() → 맨 위에서 꺼냄
  • peek() → 맨 위 요소 확인(삭제 X)


Queue (큐)

특징

뒤(rear)에서 삽입, 앞(front)에서 삭제

동작 원리

FIFO (선입선출) → 먼저 들어간 게 먼저 나온다.

제한

데이터 흐름이 앞 → 뒤 단방향으로만 이동

메서드

  • offer(E e) → 뒤에 삽입
  • poll() → 앞에서 꺼냄
  • peek() → 맨 앞 요소 확인(삭제 X)


Deque (덱)

특징

양쪽(앞, 뒤)에서 삽입/삭제 모두 가능

동작 원리

LIFO + FIFO 모두 지원 (스택처럼도, 큐처럼도 사용 가능)

제한

특별한 제약 없음 → 가장 유연한 자료구조

메서드

  • offerFirst(E e) → 앞에 삽입
  • pollFirst() → 앞에서 꺼냄
  • peekFirst() → 앞 요소 확인(삭제 X)
  • offerLast(E e) → 뒤에 삽입
  • pollLast() → 뒤에서 꺼냄
  • peekLast() → 뒤 요소 확인(삭제 X)


마치며

읽어주셔서 감사합니다.




참고자료

What do you need to know about Queue in Data Structure?
[자료구조] 스택(Stack)/큐(Queue)/덱(Deque)
[Java/자료구조] 선형구조 - 큐(Queue), 스택(Stack), 덱(Deque) 이해하기 - 1
[자료구조] 스택과 큐, 데크(Stack, Queue, Deque)

0개의 댓글