Queue란?

<aside> 📖 FIFO(First in First Out, 선입 선출), 입력과 출력을 한쪽 끝(front, rear)로 제한

</aside>

  1. 큐는 들어올 때 rear(끝 부분)으로 들어와 나올 때는 front(앞 부분)으로 나가는 특성이 있다.

Queue 예시

  1. Buffer, 작업 대기열에서 주로 사용된다 → 먼저 들어간 것이 먼저 나와야 하는 상황

코드로 이해하는 큐

전체적인 구조

Class Stack {

		private int rear = 0;
    private int front = 0;
		private Object[] queue;
		private int QUEUE_MAX_SIZE;

		public Queue(int QUEUE_MAX_SIZE) {
				this.QUEUE_MAX_SIZE = QUEUE_MAX_SIZE;
				this.queue = new Object[QUEUE_MAX_SIZE+1];
		}

		void enqueue(int data) {
			...
		}

		void dequeue() {
			...
		}

		boolean isEmpty() {
			...
		}

		boolean isFull() {
			...
		}
}
  1. 큐의 맨 앞과 맨 끝을 가리킬 front, rear 변수를 선언한다.

enqueue : 데이터 삽입

void enqueue(Object data) {
		if(isFull()) {
				Error!
		}

		queue[rear++] = data;
}

  1. 데이터를 rear를 통해 삽입한다.
  2. 데이터를 삽입한 후 rear의 위치를 한칸 뒤로 이동시킨다.

dequeue : 데이터 출력

void dequeue() {
		if(isEmpty()) {
				Error!
		}

		queue[front++] = null;
}
  1. 데이터를 front를 통해 출력한다.