큐(Queue)란? 큐는 스택과 달리 먼저 들어온 데이터가 먼저 나가는 자료구조이다. 줄을 서 있는 사람들을 생각하면 편할 것이다. 큐는 스택와 다르게 삽입과 삭제가 같은 곳에서 일어나지 않는다. 삭제연산은 앞(front)에서 일어나고 삽입 연산은 뒤(rear)에서 일어난다. 이 그림에서 원소 $D$를 추가하면 $C$ 뒤에 추가되고 삭제연산을 하면 가장 맨 앞의 $A$가 삭제된다. 이렇게 먼저 들어온 원소가 먼저 나가는 형태를 선입선출(FIFO: First-In-First-Out)이라고 한다. Queue의 기능 $push(x)$: $x$를 큐의 맨 뒤에 추가한다. $pop()$: 큐의 맨 앞의 원소를 삭제한다. $empty()$: 큐가 비어있으면 $1(true)$, 아니면 $0(false)$을 리턴한다...