후입선출 (LIFO: Last-In-First-Out) 자료구조이다. 마치 바구니에 책을 겹겹이 쌓아올리는 것처럼 한 방향에서만 데이터의 삽입/삭제가 일어난다.
A-B-C
순으로 데이터가 삽입되었으며, 삭제 시에는 C-B-A
순이 될 것이다.O(1)
의 시간 복잡도를 갖는다.선입선출 (FIFO: First-In-First-Out) 자료구조이다. 한쪽 방향에서는 데이터 삽입이, 다른 쪽에서는 데이터 삭제가 일어나 먼저 들어간 데이터가 먼저 나오게 되는 자료구조이다.
A-B-C
순으로 데이터가 삽입되었으며, 삭제 시에도 A-B-C
순으로 삭제될 것이다.큐의 삭제 연산이 일어나는 곳을 front
, 삽입 연산이 일어나는 곳을 rear
라고 부르는데, 데이터를 계속하여 삭제하다보면 front
값이 하나씩 밀려 저장공간은 있는데도 데이터를 삽입할 수 없는 상황이 발생할 수 있다. 이러한 단점을 보완하기 위해 나온 곳이 원형 큐이다.
양쪽이 뚫려있는 파이프와 같은 형태인 선형 큐와는 달리 원형 큐는 파이프의 출입구를 연결시켜놓은 듯한 모양이다. rear
와 front
값은 rear = (rear+1) % max
, front = (front+1) % max
와 같은 식으로 조정을 해주기 때문에 삽입/삭제가 반복되어도 여유공간을 최대로 활용할 수 있다.