안녕하세요
큐의 정의조건에는 "아이템이 한개또는 0개일때는 front와 rear포인터의 값이 같다" (전자는 해당 노드의 주소 후자는 Null) 가 있는데요
강의 16:30 bool DeQue 함수를 보면 교수님의 코드는
큐가 빌경우 front 와 rear의 값이 Null로 같아지는 경우는 구현했으나 원소가 하나일때 둘이 같아지게 하는 코드가 없는것같습니다.
아래는 조잡하지만 제가 구현한 코드인데요
bool DeQue(Item*item , Queue*pq)
{
if(pq->first==Null)
{ printf("empty₩n"); return false;}
Node*temp=pq->front->next;
*item=pq->front->item;
free(pq->front);
pq->front=head;
pq->size-=1;
if(pq->front==Null ll
pq->front->next==Null)
{ pq->rear=pq->front;}
return true;
}
마지막 if처럼 둘이서로 같게해주는 코드가 필요하다 보는데 어떻게 생각하시나요?
안녕하세요? 군생활 중에 열심이시군요. 박수를 보냅니다.
이 경우는 원소가 1개일때(혹은 그 이상도 마찬가지입니다.) Enqueue와 Dequeue를 순차적으로 실행했을 때 각각
head와 rear가 어디를 가리키게 되는지 고민해보시면 좋을 것 같습니다.
댓글