본문 바로가기

이론/자료구조와 실습

Queue) Queue란?

728x90
반응형

Queue

  • 데이터를 순서대로 처리하기 위한 선형 자료구조
  • 선입선출 (First In First Out, FIFO)임
  • 은행 창구 서비스와 비슷함. 추가로 작업 스케줄링, 네트워크 트래픽 관리에서 활용

Queue의 주요 연산

  • enqueue: 큐의 뒤쪽에 요소를 추가함
    • 큐가 가득 차지 않았다면, rear 포인터가 가리키는 위치에 요소를 추가하고, rear를 다음 위치로 이동
  • dequeue: 큐의 앞쪽에서 요소를 제거하고 반환
    • 큐가 비어 있지 않다면, front 포인터가 가리키는 요소를 제거하고, front를 다음 요소로 이동.
  • peek: 큐의 앞에 있는 요소를 조회함
    • 큐가 비어 있지 않다면, front 포인터가 가리키는 요소를 반환
  • isEmpty: 큐가 비어 있는지 확인
    • front와 rear 포인터의 위치, 또는 큐에 저정된 요소 수를  확인하여 반환

자바 Queue

  • add(E e): 큐의 끝에 요소를 추가, 큐에 여유 공간이 없으면 IllegalStateException을 던짐.
  • offer(E e): add와 유사하지만, 큐에 여유 공간이 없을 때 예외를 던지는 대신 false를 반환.
  • remove(): 큐의 앞에서 요소를 제거하고 그 값을 반환. 큐가 비어 있을 경우 NoSuchElementException을 던짐.
  • poll(): remove와 유사하지만, 큐가 비어 있을 때 예외를 던지는 대신 null을 반환.
  • element(): 큐의 앞에 있는 요소를 반환하지만 큐에서 제거하지는 않음. 큐가 비어 있을 경우 NoSuchElementException을 던짐.
  • peek(): element와 유사하지만, 큐가 비어 있을 때 예외를 던지는 대신 null을 반환.

 

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

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

        // enqueue - 요소를 큐에 추가
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);

        // peek - 큐의 앞쪽 요소를 조회 (제거하지 않음)
        System.out.println("Queue peek: " + queue.peek());

        // dequeue - 큐에서 요소 제거 및 반환
        while (!queue.isEmpty()) {
            System.out.println("Queue poll: " + queue.poll());
        }

        // 이 시점에서 큐는 비어 있음.
        System.out.println("Is the queue empty? " + queue.isEmpty());
    }
}

 

728x90
반응형

'이론 > 자료구조와 실습' 카테고리의 다른 글

Queue) Priority Queue  (1) 2024.01.03
Queue) Circular Queue  (1) 2024.01.03
Set) Hash set  (3) 2024.01.02
Map) HashMap  (1) 2024.01.02
Search) Binary Search (이진탐색)  (0) 2023.12.27