Page 153 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 153
디큐 함수 Deque
Deque 함수는 큐에서 데이터를 디큐하는 함수입니다. 디큐에 성공하면 0을 반환하지만 큐
가 텅 비어 디큐할 수 없으면(num <= 0 상태) -1을 반환합니다. 그림 4-14는 디큐를 수행하는
과정 중의 하나로, 처음부터 차례대로 데이터 8개(35, 56, 24, 68, 95, 73, 19, 82)를 저장한 큐에
서 35를 디큐하는 모습입니다. que[front](que[7])에 저장한 값 35를 꺼내고 front 값을 1만
큼 증가한 다음 num 값을 1만큼 감소합니다(실습 4-5[C]의 1 ).
여기서 인큐와 마찬가지로 디큐도 인덱스 초과 문제가 발생합니다. 디큐하기 전의 front 값이
배열의 끝(11)이라면 위의 과정을 거치고 난 후의 front 값은 max(12)가 되어 배열 마지막 요
소의 인덱스를 초과합니다.
35를 디큐
num = 8
11 0
Deque(&q, &x); 0 73
10 1 1
95 73 19
68 19 2 82
❸
9 2
24 82 4
5
56 6
8 ❸ rear
❼ 35
35 8 56 디큐
❼ 4 9 24
front 10 68
6 5
11 95
35를 디큐
11 0 num = 7
0 73
10 1
95 73 1 19
68 19 2 82
9 2 ❸
24 82 4
5
56 6
❽ ❸ rear
7 35
front 35
❽ 56
7 4 9 24
10 68
6 5
11 95
[그림 4-14] 큐에서 디큐하는 과정(1)
그림 4-15는 이런 문제를 해결한 디큐의 모습입니다. 1만큼 증가한 front 값이 큐의 용량인
max와 같아지면 front 값을 배열의 처음인 0으로 변경해야 합니다(실습 4-5[C]의 2 ).
이렇게 하면 다음에 디큐를 수행하더라도 제대로 que[0]의 위치에서 데이터를 꺼냅니다.
04•스택과 큐 153