Programming/C DataStructure

Queue - 큐 개념

양디 2016. 1. 8. 00:13


Queue?

저번에 Stack에 배울 때 가장 중요했던 특징은 바로 LIFO(Last In First Out)였다.

반면에 Queue에서 가장 큰 특징은 

FIFO(First In First Out)이다.


약자가 뜻하는 대로, 먼저 들어간 것이 먼저 나온다는 뜻이다.

일반적인 줄 서기 개념을 생각하면 바로 Queue의 개념이랑 동일하다는 것을 알 수 있다.


혹시 모르니 실생활 예를 들어보자.


마트에서 계산을 위하여 줄을 서 있다.

먼저 온 사람은 먼저 계산을 하고, 나중에 온 사람은 나중에 계산을 한다.

이것이 Queue이다.


그림으로 표현하면 다음과 같다.

위의 Data 숫자는 도착한 순서를 의미한다.

Data 1은 첫번째로 도착했기 때문에, Queue에서 빠져나갈 때에 가장 먼저 나간다.


반대로 7은 마지막으로 도착했기 때문에 기존에 들어와있던 데이터들이 다 나가야 나갈 수 있다.



Queue 구성 요소

Queue에는 구성요소가 하나 더 늘었다.

Stack에서는 제일 윗부분에서만 데이터가 들어왔다 나갔다 하므로 제일 윗부분에 해당하는 포인터(top)만 있다.

그러나 Queue의 경우에는 들어오는것은 앞부분에, 나가는 것은 뒷부분에 있으므로 

가장 앞 부분 Front 와 가장 뒷부분 Rear 의 포인터가 필요하다.


스택과 동일하게 데이터 갯수를 저장하는 Count 는 선택사항이다.


스택에서는 집어넣는것을 Push, 꺼내는걸 Pop이라 했지만

큐에서는 넣는것을 Enqueue, 꺼내는 걸 Dequeue라고 한다.

줄을 세우는 Enqueue, 줄에서 벗어나는 Dequeue라고 생각하면 되겠다.


꺼낼 데이터를 미리 볼 수 있는 peek 함수도 또한 선택이다 !


다음 포스팅에서는 직접 구현을 해보도록 하자 !



Point !

Queue : List In First Out 

집어넣는 Enqueue, 꺼내는 Dequeue










댓글