21. 배열 구조의 큐 문제점
• 1차원 배열을 사용한 자료구조에서는 큐가 포화 상태가 아닐 경우 삽
입연산을 수행하도록 정의.
• 포화 상태를 확인하기 위해서 rear가 마지막 index인지 체크.
• 하지만 rear가 마지막 배열에 있어도 앞 index에 빈자리가 있어도
포화상태로 인식 하고 삽입연산을 수행하지 않음.
• 빈자리를 사용하려면 앞부분을 옮겨야 함.
• 이러한 문제를 해결하기 위해 원형 큐를 사용.
22. 포화 상태로 잘못 인식하는 큐
Queue [0] [1] [2]
rearfront
Queue [0] [1] [2]
rearfront
28. 원형 큐의 삽입/삭제 연산 과정 #생성
[1] [2]
[3][0]
rearfront
createQueue();
front <- 0
rear <- 0
29. 원형 큐의 삽입/삭제 연산 과정 #삽입1
A
[1] [2]
[3][0]
rear
front
enQueue(cQ, A);
rear <-(0+1) mod 4
cQ[1] <- A
30. 원형 큐의 삽입/삭제 연산 과정 #삽입2
BA
[1] [2]
[3][0]
rear
front
enQueue(cQ, B);
rear <-(0+1) mod 4
cQ[2] <- B
31. 원형 큐의 삽입/삭제 연산 과정 #삭제
B
[1] [2]
[3][0]
rearfront
deQueue(cQ);
front(0+1) mod 4
return cQ(1);
32. 원형 큐의 삽입/삭제 연산 과정 #삽입3
B
C
[1] [2]
[3][0]
rear
front
enQueue(cQ, C);
rear<-(2+1) mod 4
cQ[3] <- C;
33. 원형 큐의 삽입/삭제 연산 과정 #삽입4
B
CD
[1] [2]
[3][0]
rear
front
enQueue(cQ, D);
rear<-(3+1) mod 4
cQ[4] <- D;
34. 연결 큐 (Linked List Queue)
• 순차 자료 구조는 사용크기 제한과 원소가 없을 때도 그 크기를 유지해야
하는 단점.
• 그 부분을 극복하기 위해서 연결 자료구조를 이용.
A 200
100번지
B 300
200번지
c null
300번지
front rear