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]


연결 큐
-큐를 연결리스트로 구현하면 메모리방식이 동적이므로 이동큐,원형큐 방식이 필요 없다. 

'밥벌이 > IT 상식, 시사' 카테고리의 다른 글

트리  (0) 2020.08.26
데크 Deque  (0) 2020.08.25
SQL  (0) 2020.08.23
네트워크 보안공격  (0) 2020.08.22
데이터베이스 시스템 구성요소(관계대수,관계 해석,QBE)  (0) 2020.08.21

+ Recent posts