본문 바로가기

JAVA 코딩테스트 참고

큐 Queue

Queue ADT (Abstract Data Type)

연산 (Operations)

  • boolean isFull() → 큐가 가득 찼는지 확인하여 boolean 값을 반환합니다.
  • boolean isEmpty() → 큐가 비어 있는지 확인하여 boolean 값을 반환합니다.
  • void enqueue(itemType item) → 큐에 데이터를 추가합니다.
  • itemType dequeue() → 큐에서 가장 먼저 추가된 데이터를 제거하고 해당 값을 반환합니다.

상태 (State)

  • int front → 큐의 첫 번째 요소의 위치를 기록합니다.
  • int rear → 큐의 마지막 요소의 위치를 기록합니다.
  • itemType data[maxsize] → 큐의 데이터를 관리하는 배열로, 최대 maxsize개의 데이터를 관리합니다.

세부 동작 (Detailed Operations)

Data 추가 (Enqueue)

  1. isFull() → 큐가 가득 찼는지 먼저 확인합니다.
  2. rear을 1 증가시킵니다.
  3. data[rear]에 새로운 데이터를 추가합니다.

Data 제거 (Dequeue)

  1. isEmpty() → 큐가 비어 있는지 먼저 확인합니다.
  2. front를 1 증가시킵니다.
  3. data[front]의 값을 반환합니다.

큐 ADT의 예시 구현

public class Queue<T> {
    private int maxSize;
    private int front;
    private int rear;
    private T[] data;

    @SuppressWarnings("unchecked")
    public Queue(int maxSize) {
        this.maxSize = maxSize;
        this.data = (T[]) new Object[maxSize];
        this.front = 0;
        this.rear = -1;
    }

    public boolean isFull() {
        return rear == maxSize - 1;
    }

    public boolean isEmpty() {
        return front > rear;
    }

    public void enqueue(T item) {
        if (isFull()) {
            throw new IllegalStateException("Queue is full");
        }
        data[++rear] = item;
    }

    public T dequeue() {
        if (isEmpty()) {
            throw new IllegalStateException("Queue is empty");
        }
        return data[front++];
    }
}

 

'JAVA 코딩테스트 참고' 카테고리의 다른 글

스택  (0) 2024.08.20
Map - EntrySet 사용  (0) 2024.04.24