Search

큐

큐(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
볡사