
배열을 이용하여 큐를 직접 구현해보자.
const int MX = 1000005;
int dat[MX]; // 원소 저장 배열
int head = 0, tail = 0; // 각각 큐의 앞쪽과 뒤쪽을 가리킬 변수
void push(int x) { dat[tail++]; }
void pop() { head++; }
int front() { return head; }
int back() { return dat[tail - 1]; }
// 배열 속 원소들을 가리키며 이동하면서 데이터를 변경/삭제하지 않고도 해당 기능을 구현할 수 있다.
rear , front 라고 한다.가장 앞에 있는 원소의 인덱스 이고 tail은 가장 뒤에 있는 원소의 인덱스 + 1 이다.원형의 배열을 가정하고 구현한 큐

push과 pop 연산 시 dat 배열에서 (head와 tail이 가리키는) 큐의 원소들이 들어있는 장소가 점점 오른쪽으로 밀린다. 스택과 다르게, 큐는 선형 배열로 구현할 경우 삭제가 발생할 때마다 점점 오른쪽으로 밀려 앞쪽에 공간이 많음에도 새 원소를 추가할 수 없는 상황이 생긴다. 이를 해결하기 위해서는 큐의 원소가 들어갈 배열을 원형으로 만들면 된다.
