728x90
반응형
Queue
- 데이터를 순서대로 처리하기 위한 선형 자료구조
- 선입선출 (First In First Out, FIFO)임
- 은행 창구 서비스와 비슷함. 추가로 작업 스케줄링, 네트워크 트래픽 관리에서 활용
Queue의 주요 연산
- enqueue: 큐의 뒤쪽에 요소를 추가함
- 큐가 가득 차지 않았다면, rear 포인터가 가리키는 위치에 요소를 추가하고, rear를 다음 위치로 이동
- dequeue: 큐의 앞쪽에서 요소를 제거하고 반환
- 큐가 비어 있지 않다면, front 포인터가 가리키는 요소를 제거하고, front를 다음 요소로 이동.
- peek: 큐의 앞에 있는 요소를 조회함
- 큐가 비어 있지 않다면, front 포인터가 가리키는 요소를 반환
- isEmpty: 큐가 비어 있는지 확인
- front와 rear 포인터의 위치, 또는 큐에 저정된 요소 수를 확인하여 반환
자바 Queue
- add(E e): 큐의 끝에 요소를 추가, 큐에 여유 공간이 없으면 IllegalStateException을 던짐.
- offer(E e): add와 유사하지만, 큐에 여유 공간이 없을 때 예외를 던지는 대신 false를 반환.
- remove(): 큐의 앞에서 요소를 제거하고 그 값을 반환. 큐가 비어 있을 경우 NoSuchElementException을 던짐.
- poll(): remove와 유사하지만, 큐가 비어 있을 때 예외를 던지는 대신 null을 반환.
- element(): 큐의 앞에 있는 요소를 반환하지만 큐에서 제거하지는 않음. 큐가 비어 있을 경우 NoSuchElementException을 던짐.
- peek(): element와 유사하지만, 큐가 비어 있을 때 예외를 던지는 대신 null을 반환.
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// enqueue - 요소를 큐에 추가
queue.offer(1);
queue.offer(2);
queue.offer(3);
// peek - 큐의 앞쪽 요소를 조회 (제거하지 않음)
System.out.println("Queue peek: " + queue.peek());
// dequeue - 큐에서 요소 제거 및 반환
while (!queue.isEmpty()) {
System.out.println("Queue poll: " + queue.poll());
}
// 이 시점에서 큐는 비어 있음.
System.out.println("Is the queue empty? " + queue.isEmpty());
}
}
728x90
반응형
'이론 > 자료구조와 실습' 카테고리의 다른 글
| Queue) Priority Queue (1) | 2024.01.03 |
|---|---|
| Queue) Circular Queue (1) | 2024.01.03 |
| Set) Hash set (3) | 2024.01.02 |
| Map) HashMap (1) | 2024.01.02 |
| Search) Binary Search (이진탐색) (0) | 2023.12.27 |