p121 순환 큐에서 예제에서 질문이요.
2010-02-15
|
by chunlangs
2648
CircularQueue에서
while ( CQ_IsFull( Queue ) == 0 )
{
printf(" %d를 삽입합니다.\n", i);
CQ_Enqueue( Queue, i++ );
}
이 부분에 i가 107일때
CQ_Enqueue( Queue, i++ );
Queue->Rear부분이 11이 되어 이 함수를 호출할 때 0으로 돌아가버리는데요;
그래서 결국 107값은 입력이 안되는 데;
void CQ_Enqueue( CircularQueue* Queue, ElementType Data)
{
int Position = 0;
if(Queue->Rear == Queue->Capacity + 1)
{
Queue->Rear = 0;
Position = 0;
}
else
{
Position = Queue->Rear++;
Queue->Nodes[Position].Data = Data;
}
}
사실 여기서 if부분에서 0으로 돌아갈 때의 Data값도 배열에 입력을 해야하지 않나요? 따로 설정을 안하신 이유가 있으신가요?
그리고 순환 큐에서
3장 큐의 맨 마지막 이것만은 알고 갑시다. 에서요. 전단과 후단의 위치가 공백상태가 되잖아요.
만약 p112의 오른쪽 그림과 같이 포화상태의 큐에서 삽입 연산을 한다면, 후단 Queue->Rear의 값이 0이 되어
전단과 후단이 서로 일치하게 되지 않나요????
~~ 이점 정말 궁금하네요. 꼭!~~ 답변 부탁드려요.