큐 예제관한 질문입니다
2010-01-21
|
by ddingddong88
2457
책의 내용 큐 중에 함수내용을보면
큐 삽입과 공백상태,포화상태를 확인하는 함수예제가 있는데요..
제가 궁금한건 여기서 나오는 rear이 정확히 어떤걸 말하는지 헷갈려서 질문을드립니다(p115)
----------------------------------------------------------------------------------
①책에서 나온 예제의 배열은 0~8까지 있습니다. 전단은 4번부터 시작하고 실제후단은 7번으로 되있습니다. 그러면 여기서 rear은 8번이 되는건가요? capacity또한 8이되는거구요?
②만약에 위의 내용이 맞는내용이라면 삽입소스중
if(Queue->rear == Queue->capacity+1)
.......
이 소스의 뜻은 "실제후단이 8번까지 꽉차면 후단의 위치는 9가되고 그러기때문에 capacity(8)+1과 같을때" 라는말이 성립되는건가요? 용량은 8까지밖에없지만 실제후단이 8이되면 rear값은 임의로 9로 보는건가요?
③ 포화상태 확인하는 함수를 보면
if(Queue->front < Queue->rear)
return (Queue->rear - Queue->front)==Queue->capacity
else
return (Queue->rear+1)==Queue->front
이렇게 되어있는데 예를들어서
ㅁㅁㅁㅁ 라는 전단이 1이고 실제후단이 4라는 큐가 있다고친다면
4 1 2 3
Queue->rear은 1이되고(실제후단 4의 다음에위치하니깐) Queue->front도 1이되는거인가요? 그렇다면 else에 대해서 위의 그림처럼 큐가 포화상태여도 소스성립이 되지가 않게되는거같은데 어떻게 이해를 해야될까요?
혼자 독학으로 c언어부터 알고리즘하구있는데 정말정말힘드네요.. 시간이되신다면 답변부탁드릴게요