- 먼저 들어간 데이터가 나중에 나오는 구조인 스택과는 다르게 큐는 먼저 들어간 데이터가 먼저 나오는 구조이다.
이것이 스택과 큐의 유일한 차이 !!
- 스택이 초코볼통과 쟁반으로 설명된다면, 큐는 줄서기로 비유 할 수 있다 !
우리는 줄 설때 먼저 온 사람이 먼저 서비스를 받는다!
이것이 큐의 구조이다 !
즉 큐는 선입선출 구조의 자료구조임을 알 수 있다 !
enqueue : 큐에 데이터를 넣는 연산
dequeue : 큐에서 데이터를 꺼내는 연산
(stack 에서는 이와 다르게 push/pop이라고 하였다.)
Operation :
void QueueInit(Queue*pq);
-큐의 초기화 진행
-큐 생성 후 제일 먼저 호출되어야하는 함수
int QISEmpthy(Queue*pq);
- 큐가 빈 경우 Ture, 그렇지 않은 경우 False(0)를 반환한다.
void Enqueue(Queue*pq, Data data);
- 큐에 데이터를 저장한다. 매개변수 data로 전달된 값을 저장한다.
Data Dequeue(Queue * pq);
- 저장순서가 가장 앞선 데이터를 삭제한다.
- 삭제된 데이터는 반환된다.
- 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장되어야한다(그래야지 삭제도 가능하니깐 !! )
Data QPeek(Queue * pq);
- 저장순서가 가장 앞선 데이터를 반환하되 삭제하지 않는다.
- 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장 !!
ADT에서 이름충돌을 막기위해 IsEmpty, Peek 함수 앞에 Q를 붙여줬다.
Queue역시 배열기반과 연결리스트 기반으로 구현 가능하다 !