Algorithm/Data Structures

[자료구조] 큐(Queue)

NegotiationMan 2023. 1. 17. 13:27
큐란 무엇인가 ?

먼저 Queue의 사전적 의미는 줄, 대기행렬이다.

자료구조에서 큐는 처음에 저장한 데이터를 가장 먼저 꺼내는 것이다.

 

간단하게 예를 들어보자면 줄 서기 !

만약 맛집에 가려고 줄을 서고 있는데 뒤에 있는 사람이 먼저 들어간다면 ?

너무 불공평하지 않은가 ?

큐도 0, 1, 2 데이터를 넣고 꺼낼 때도 0, 1, 2 로 꺼내게 된다.

 

 

큐의 특징

FIFO, LILO -> 선입선출

즉, 순서대로 처리

 

 

큐 메서드

메서드 설명
boolean add(Object o) 지정된 객체를 Queue에 추가한다. 성공하면 true를 반환, 저장공간이 부족하면 예외 발생
Object remove() Queue에서 객체를 꺼내 반환. 비어있으면 예외 발생
Object element() 삭제없이 요소를 읽어온다. peek와 달리 Queue가 비었을 때 예외를 발생
boolean offer(Object o) Queue에 객체를 저장. 성공하면 true, 실패하면 false를 반환 
Object poll() Queue에서 객체를 꺼내서 반환. 비어있으면 null을 반환
Object peek() 삭제없이 요소를 읽어 온다. Queue가 비어있으며 null을 반환

 

큐의 예시

import java.util.*;

public class QueueEx {
    public static void main(String[] args) {
        Queue q = new LinkedList();     // Queue 인터페이스의 구현체인 LinkedList를 사용

        q.offer("0");
        q.offer("1");
        q.offer("2");

        System.out.println("= Queue =");
        while(!q.isEmpty()){
            System.out.println(q.poll());
        }
        // 0
        // 1
        // 2
    }
}

 

 

큐의 활용

ex) 최근사용문서, 인쇄작업 대기목록, 버퍼(buffer)

 

 

 

 

 

입출력 방향 고정, 두 곳으로 접근 가능

데이터를 하나씩 넣고 뺄 수 있다.

두개의 입출력 방향을 가지고 있다.

 

원형 큐란 ?