배열을 이용한 큐 구현하기
큐는 데이터를 선입선출(FIFO - First-In-First-Out) 순서로 처리하기 위한 자료구조입니다. 이번에는 배열을 이용하여 큐를 구현하는 방법에 대해서 알아보겠습니다.
1. 배열과 변수 선언하기
우선 큐의 요소들을 저장하기 위한 배열과 큐의 시작과 끝 위치를 나타내는 변수를 선언합니다.
int[] queue;
int front;
int rear;
2. 큐 초기화하기
큐를 초기화하기 위해 배열의 크기를 설정하고 front와 rear 변수를 초기값으로 설정합니다.
public void initializeQueue(int size) {
queue = new int[size];
front = -1;
rear = -1;
}
3. 큐에 데이터 추가하기 (Enqueue)
Enqueue 작업은 큐의 끝(rear)에 새로운 데이터를 추가하는 것입니다.
public void enqueue(int data) {
// 큐가 비어있을 경우
if (front == -1) {
front = 0;
rear = 0;
}
// 큐가 가득 차있을 경우
else if (rear == queue.length - 1) {
System.out.println("Queue is full");
return;
}
// 일반적인 경우
else {
rear++;
}
queue[rear] = data;
}
4. 큐에서 데이터 삭제하기 (Dequeue)
Dequeue 작업은 큐의 시작(front)에서 데이터를 제거하는 것입니다.
public int dequeue() {
// 큐가 비어있을 경우
if (front == -1) {
System.out.println("Queue is empty");
return -1; // 예외 처리를 위해 -1 반환
}
int data = queue[front];
// 큐에 데이터가 하나만 남아있을 경우
if (front == rear) {
front = -1;
rear = -1;
}
// 일반적인 경우
else {
front++;
}
return data;
}
5. 큐의 상태 확인하기
큐는 비어있는지 (Empty) 혹은 가득 차있는지 (Full) 여부를 확인할 수 있습니다.
public boolean isEmpty() {
return front == -1;
}
public boolean isFull() {
return rear == queue.length - 1;
}
6. 큐의 데이터 출력하기
큐의 모든 데이터를 출력하는 작업입니다.
public void printQueue() {
// 큐가 비어있을 경우
if (front == -1) {
System.out.println("Queue is empty");
return;
}
System.out.print("Queue: ");
for (int i = front; i <= rear; i++) {
System.out.print(queue[i] + " ");
}
System.out.println();
}
7. 큐 구현 테스트하기
public static void main(String[] args) {
QueueArray queue = new QueueArray();
queue.initializeQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
queue.printQueue(); // 출력: Queue: 1 2 3 4 5
queue.dequeue();
queue.dequeue();
queue.printQueue(); // 출력: Queue: 3 4 5
}
위의 코드를 실행하면, 배열을 이용한 큐가 제대로 동작하는지 확인할 수 있습니다.
이렇게 배열을 이용하여 큐를 구현할 수 있습니다. 다음에는 연결 리스트를 이용한 큐 구현 방법에 대해서 알아보겠습니다.
참고 자료
해시태그
#자료구조 #배열 #큐