QUEUE 큐
-FRONT: 가장 먼저 출력될 노트 포인터. 실제 큐 위치보다 1이 작은 위치다.
초기조건: front = rear = 0
공백조건: front = rear
오버플로우조건: rear = n
이동 큐
-이동큐에서는 빈공간이 있어도 오버플로우가 발생할 수 있다.
-이경우 데이터를 빈공간으로 이동시켜서 오버플로우가 나지 않도록 해야한다.
-이때 이동이 많이되므로 원형큐를 사용하는게 좋다
원형큐
- queue가 full이 되는 경우, 데이터 이동이 많이 일어날 때의 이동큐의 과부하 문제를 해결한다.
-오버플로우 발생시, 데이터를 이동하지 않고, 비어있는 맨 처음 노드에 데이터를 입력한다.
->하나의 빈공간은 아무위치나 상관이 없다. 즉 0번지에도 데이터를 입력할 수 있다.
-front = rear: 큐가 비어있는 경우 = 가득 찬 경우. 즉 오버플로우, 언더플로우 구분이 불가능함.
->구분방법: 큐의 최대원소스를 maxsize -1 로 설정하면 된다. 그러면 초기값은 front=rear=0이다.
-원형큐 삽입 순서
1)rear위치 증가 시킨 후 :rear = rear+1 %MAX_QUEUE_SIZE
2)큐가 만원인지 체크: front ==rear //인 경우는 queue가 full인상태
3)front != rear 이면 값을 삽입: queue[rear] = item
-원형큐 삭제 순서
1)큐가 공백인지 체크: front == rear //인 경우는 queue가 empty상태
2)front != rear 이면 front값 증가 : front = (front +1)%MAX_QUEUE_SIZE
3)원소 삭제: queue[front]
연결 큐
-큐를 연결리스트로 구현하면 메모리방식이 동적이므로 이동큐,원형큐 방식이 필요 없다.