데이터 처리 순서를 보장하는 FIFO(First-In, First-Out) 구조의 선형 자료구조인 큐(Queue)의 메커니즘과 구현 방법을 정리한다.
큐의 핵심 동작
- Enqueue: 큐의 맨 뒤(Rear)에 데이터를 삽입한다.
- Dequeue: 큐의 맨 앞(Front)에서 데이터를 꺼낸다.
import java.util.LinkedList;
import java.util.Queue;
public class QueueEx {
public static void main(String[] args) {
// 자바에서는 Queue 인터페이스를 LinkedList로 구현하여 사용
Queue<String> queue = new LinkedList<>();
// 데이터 삽입 (Enqueue)
queue.offer("Task 1");
queue.offer("Task 2");
queue.offer("Task 3");
// 데이터 확인 (꺼내지 않고 맨 앞 요소 보기)
System.out.println("Front: " + queue.peek()); // Task 1
// 데이터 추출 (Dequeue)
while (!queue.isEmpty()) {
System.out.println("Processing: " + queue.poll());
}
}
}
큐의 다양한 종류
- 선형 큐 (Linear Queue): 배열로 구현 시 Dequeue가 발생할 때마다 데이터를 앞으로 당겨야 하는 비효율이 발생한다.
- 원형 큐 (Circular Queue): 배열의 시작과 끝을 연결하여 메모리 낭비를 해결한 구조다.
- 우선순위 큐 (Priority Queue): 들어온 순서와 상관없이 우선순위가 높은 데이터가 먼저 나간다.
실전 활용 사례
- 운영체제: 프로세스 스케줄링 및 입출력 버퍼 관리.
- 네트워크: 패킷 전송 대기열.
- 알고리즘: 너비 우선 탐색(BFS)의 방문 노드 관리.
P.S
큐는 순차적인 작업 처리가 필요한 모든 시스템의 기반이 되는 자료구조다.
데이터의 입력과 출력 위치를 엄격히 분리함으로써 작업의 질서를 유지하는 것 같다.