메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 알고리즘

뇌를 자극하는 알고리즘 질의응답 게시판입니다.

큐 예제관한 질문입니다

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언어부터 알고리즘하구있는데 정말정말힘드네요.. 시간이되신다면 답변부탁드릴게요
댓글 입력