본문 바로가기
CS/자료구조

array 방식 int queue 자바 코드 구현

by Renechoi 2023. 6. 17.

 

링 버퍼를 사용하지 않고 순수 배열을 이용해 구현한 int queue 이다. 큐의 기본특성인 FIFO 로직을 수행한다. 

 

 

package datastructure.queue.intarrayqueue;

public class IntArrayQueue {
   private int max;
   private int pointer;
   private int[] queue;

   public IntArrayQueue(int capacity) {
      max = capacity;
      pointer = 0;
      queue = new int[max];
   }

   public void enqueue(int value) {
      if (pointer >= max) {
         throw new IllegalStateException("큐가 가득 찼습니다.");
      }
      queue[pointer++] = value;
   }

   public int dequeue() {
      if (pointer <= 0) {
         throw new IllegalStateException("큐가 비어 있습니다.");
      }
      int value = queue[0];
      reconstruct();
      pointer--;
      return value;
   }

   public int peek() {
      if (pointer <= 0) {
         throw new IllegalStateException("큐가 비어 있습니다.");
      }
      return queue[0];
   }

   public boolean isEmpty() {
      return pointer == 0;
   }

   public boolean isFull() {
      return pointer == max;
   }

   public int size() {
      return pointer;
   }

   public void clear() {
      pointer = 0;
   }

   private void reconstruct() {
      for (int i = 1; i < pointer; i++) {
         queue[i - 1] = queue[i];
      }
      queue[pointer - 1] = 0;
   }

}

 

테스트 코드 

 

package datastructure.queue.intarrayqueue;

public class IntArrayQueueMain {
    public static void main(String[] args) {
        IntArrayQueue queue = new IntArrayQueue(5); // 용량(capacity)이 5인 큐 생성

        // 큐에 값 추가
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);
        queue.enqueue(4);
        queue.enqueue(5);

        System.out.println("큐의 크기: " + queue.size()); // 큐의 크기 출력: 5
        System.out.println("큐가 가득 찼는가? " + queue.isFull()); // 큐가 가득 찼는지 여부 출력: true

        System.out.println("큐의 맨 앞 요소: " + queue.peek()); // 큐의 맨 앞 요소 확인: 1


        int removedValue = queue.dequeue();         // 큐에서 값 제거
        System.out.println("제거한 값: " + removedValue); // 제거된 값 출력: 1

        System.out.println("큐의 크기: " + queue.size()); // 큐의 크기 출력: 4

        // 큐 비우기
        queue.clear();
        System.out.println("큐의 크기: " + queue.size()); // 큐의 크기 출력: 0
        System.out.println("큐가 비었는가? " + queue.isEmpty()); // 큐가 비어 있는지 여부 출력: true
    }
}

 

 

실행 현황 

 

반응형