ν(Queue)
λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°λ ꡬ쑰(FIFO: First In First Out)μ μ ν μλ£κ΅¬μ‘°λ‘, νμͺ½ λμμλ μ½μ
μμ
μ΄, λ€λ₯Έ νμͺ½ λμμλ μμ μμ
μ΄ μ΄λ£¨μ΄μ§λ ꡬ쑰
ν΅μ¬ μμ
μμ | μ€λͺ
|
front | νμ 맨 μ μμλ₯Ό κ°λ¦¬ν€λ ν¬μΈν° |
rear | νμ 맨 λ€ μμλ₯Ό κ°λ¦¬ν€λ ν¬μΈν° |
enqueue | νμ λ°μ΄ν°λ₯Ό μ½μ
νλ μ°μ° |
dequeue | νμμ λ°μ΄ν°λ₯Ό μμ νλ μ°μ° |
peek | νμ 맨 μ λ°μ΄ν°λ₯Ό μ‘°ννλ μ°μ° |
μλ°λ‘ μ§μ ꡬνν μμ
public class Queue<T> {
private Node<T> front;
private Node<T> rear;
private class Node<T> {
private T data;
private Node<T> next;
public Node(T data) {
this.data = data;
this.next = null;
}
}
public void enqueue(T item) {
Node<T> newNode = new Node<>(item);
if (isEmpty()) {
front = newNode;
} else {
rear.next = newNode;
}
rear = newNode;
}
public T dequeue() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
T data = front.data;
front = front.next;
if (front == null) {
rear = null;
}
return data;
}
public boolean isEmpty() {
return front == null;
}
public T peek() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
return front.data;
}
}
Java
볡μ¬
Java Collection Framework μ¬μ© μμ
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// λ°μ΄ν° μ½μ
queue.offer("첫λ²μ§Έ");
queue.offer("λλ²μ§Έ");
queue.offer("μΈλ²μ§Έ");
// 맨 μ λ°μ΄ν° νμΈ
System.out.println("peek: " + queue.peek()); // 첫λ²μ§Έ
// λ°μ΄ν° μμ λ° μΆλ ₯
while (!queue.isEmpty()) {
System.out.println("poll: " + queue.poll());
}
}
}
Java
볡μ¬