자료구조 / Queue

박민수·2023년 12월 16일

자료구조

목록 보기
3/9
post-thumbnail

Queue 란?

큐는 데이터를 저장하고 접근하는 자료구조로, 선입선출(FIFO, First In, First Out)의 원칙을 따른다. 가장 먼저 삽입된 데이터가 가장 먼저 제거되는 구조를 갖는다.


Queue의 특징

  1. FIFO 구조: 가장 먼저 삽입된 항목이 가장 먼저 제거됨.
    두 개의 끝에서 연산 수행: 데이터의 삽입은 한 쪽 끝에서, 삭제는 다른 쪽 끝에서 이루어짐.

  2. 제한된 접근: 주로 enqueue(삽입)와 dequeue(삭제) 두 가지 기본 연산으로 조작되며, 일반적으로 중간의 특정 원소에 직접 접근하는 것은 허용되지 않음.


Queue의 장점

  • 자연스러운 순서 유지: 데이터가 삽입된 순서대로 제거되므로, 일부 상황에서 자연스러운 순서를 유지할 수 있다.

  • 너비 우선 탐색(BFS)에 유용: 그래프와 같은 자료구조에서 BFS 알고리즘에 사용된다.


Queue의 선언과 활용

선언 :

import java.util.Queue;
import java.util.LinkedList;

Queue<자료형> 변수명 = new LinkedList<>();

사용 예시 :

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        // 큐 생성
        Queue<Integer> queue = new LinkedList<>();

        // 1. Enqueue: 데이터 추가
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);

        // 2. Front: 큐의 맨 앞에 있는 데이터 확인 (제거하지 않음)
        int frontElement = queue.peek();
        System.out.println("Front Element: " + frontElement);

        // 3. Dequeue: 큐에서 데이터 제거 및 반환
        int removedElement = queue.poll();
        System.out.println("Removed Element: " + removedElement);

        // 4. Size: 큐의 크기 확인
        int size = queue.size();
        System.out.println("Queue Size: " + size);

        // 5. Is Empty: 큐가 비어있는지 여부 확인
        boolean isEmpty = queue.isEmpty();
        System.out.println("Is Queue Empty? " + isEmpty);

        // 6. Search: 특정 값이 큐에 있는지 확인 (인덱스 반환, 없으면 -1)
        int searchResult = queue.indexOf(2);
        System.out.println("Index of 2: " + searchResult);

        // 7. Contains: 특정 값이 큐에 있는지 확인 (true 또는 false 반환)
        boolean containsResult = queue.contains(3);
        System.out.println("Contains 3? " + containsResult);

        // 8. Clear: 큐 초기화 (비우기)
        queue.clear();
        System.out.println("Queue Cleared. Is Queue Empty? " + queue.isEmpty());
    }
}

Queue 구현

profile
머릿속에 떠도는 방대한 개발 지식

0개의 댓글