[JAVA] ⚙️ 자료 구조 : Stack / Queue / Deque | 간단 비교 및 정리 💬

2025. 8. 21. 19:19·✏️공부/💡JAVA
728x90
반응형

Stack / Queue / Deque

➡️ 순서를 가진 선형 구조


📌 Stack

  • 정의: "쌓아 올린" 구조, LIFO (Last In, First Out)
  • 동작:
    • push(x)  → 맨 위에 데이터 넣기
    • pop() → 맨 위에서 데이터 삭제하기
    • peek() → 맨 위 데이터 확인 (삭제는 안 함)
  • 자바 구현: Stack<E>, 또는 Deque<E>를 이용해서 구현하는 게 더 권장됨

✅ 사용 상황

  • 함수 호출(콜 스택)
  • Undo/Redo 기능
  • 괄호 검사, 수식 계산 (예: 후위 표기법 계산기)

📌 Queue

  • 정의: 줄 서기 구조, FIFO (First In, First Out)
  • 동작:
    • offer(x) → 뒤(rear)에 데이터 넣기
    • poll() → 앞(front)에서 데이터 꺼내기
    • peek() → 맨 앞 데이터 확인 (삭제는 안 함)
  • 자바 구현: Queue<E> 인터페이스, 보통 LinkedList<E>나 ArrayDeque<E>로 구현

✅ 사용 상황

  • 작업 대기열 (프린터 작업, 요청 처리)
  • BFS (너비 우선 탐색)
  • 캐시 구현 (순차적 처리 필요할 때)

📌 Deque (Double-Ended Queue)

  • 정의: 양쪽 끝에서 삽입/삭제 가능한 큐
  • 동작:
    • offerFirst(x) → 앞에 넣기
    • offerLast(x) → 뒤에 넣기
    • pollFirst() → 앞에서 꺼내기
    • pollLast() → 뒤에서 꺼내기
  • 자바 구현: Deque<E> 인터페이스, 대표적으로 ArrayDeque<E> 사용

✅ 사용 상황

  • 양방향 탐색
  • 슬라이딩 윈도우 문제
  • 스택/큐를 동시에 흉내낼 때
  • 회전 큐 (예: 원형 버퍼)

📊 비교

자료구조 구조 삽입/삭제 위치 장점 

자료구조 구조 삽입/삭제 위치 장점  단점 대표 활용
Stack LIFO 한쪽(top)만 단순, 직관적 중간 접근 불가 함수 호출, Undo/Redo, 괄호 검사
Queue FIFO 삽입: 뒤 / 삭제: 앞 순차적 처리에 적합 한쪽만 꺼낼 수 있음 작업 대기열, BFS, 캐시
Deque 양쪽 앞뒤 모두 삽입/삭제 스택+큐 동작 모두 가능 구현 복잡도↑ 양방향 탐색, 슬라이딩 윈도우, 원형 큐

 

✅ 정리

  • Stack → 뒤집어서 다시 꺼내야 할 때
  • Queue → 순서대로 처리해야 할 때
  • Deque → 양방향이 필요하거나 스택+큐 둘 다 써야 할 때

 

 

 

728x90
반응형

'✏️공부 > 💡JAVA' 카테고리의 다른 글

[JAVA] ⚙️ 자료구조 : Heap | 간단 정리 및 삽입•삭제 과정 💬  (5) 2025.08.21
[JAVA] ⚙️ 자료구조 : Tree & Binary Search Tree 🌲 | 트리 순회 | 간단 정리 및 비교 💬  (0) 2025.08.21
[JAVA | 테스트] TDD (Test-Driven Development) | 자동테스트, red•green•blue 단계  (4) 2025.08.11
[JAVA] Java Stream | mapToInt() 활용한 연산, finFirst(), isPresent(), orElseThrow(), Optional<>  (4) 2025.08.07
[JAVA] JAVA Stream | 명령형, 선언형, filter, map, stream, foreach, toArray, toList | 예제 ⭕️  (3) 2025.08.06
'✏️공부/💡JAVA' 카테고리의 다른 글
  • [JAVA] ⚙️ 자료구조 : Heap | 간단 정리 및 삽입•삭제 과정 💬
  • [JAVA] ⚙️ 자료구조 : Tree & Binary Search Tree 🌲 | 트리 순회 | 간단 정리 및 비교 💬
  • [JAVA | 테스트] TDD (Test-Driven Development) | 자동테스트, red•green•blue 단계
  • [JAVA] Java Stream | mapToInt() 활용한 연산, finFirst(), isPresent(), orElseThrow(), Optional<>
망꼬누나
망꼬누나
공부한 내용을 정리하는 공간입니다.
  • 망꼬누나
    망꼬누나의 개발 공부
    망꼬누나
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • ℹ️ 정보 및 실습 (19)
        • ☑️ Git & GitHub (8)
        • ☑️ 프로젝트 (6)
        • ☑️ 회고 및 후기 (5)
      • 🛠 CS (1)
      • 💻코딩 (88)
        • 💡Baekjoon (17)
        • 💡Programmers (71)
      • ✏️공부 (48)
        • 💡OS (1)
        • 💡Network (6)
        • 💡SpringBoot (9)
        • 💡JAVA (21)
        • 💡SQL (1)
        • 💡DB (2)
        • ☁️ Cloud (4)
        • 💡알고리즘 (4)
      • 📌 자격증 (6)
        • 📝정보처리기사 (3)
        • 📝SQLD (3)
  • 블로그 메뉴

    • 홈
    • github
  • 나의 GitHub Contribution 그래프
    Loading data ...
  • 인기 글

  • 태그

    코딩테스트
    데브코스
    알고리즘
    Java
    baekjoon
    S3
    AWS
    동시성제어
    자료구조
    github
    프로그래머스 #JAVA
    GIT
    백엔드
    map
    Set
    프로그래머스
    Stream
    네트워크
    자바
    트랜잭션
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.5
망꼬누나
[JAVA] ⚙️ 자료 구조 : Stack / Queue / Deque | 간단 비교 및 정리 💬
상단으로

티스토리툴바