Inflearn Community Q&A
16:30 질문입니다.
Written on
·
342
0
안녕하세요
큐의 정의조건에는 "아이템이 한개또는 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처럼 둘이서로 같게해주는 코드가 필요하다 보는데 어떻게 생각하시나요?
Quiz
When comparing arrays and linked lists, which data structure is more efficient for data insertion or deletion?
Array
Linked list
Stack
Q
Answer 4
1
1
1
안녕하세요.
좋은 말씀 감사드립니다.
말씀 하신대로 교수님의 EnQueue DeQueue 코드를 다시 확인하였으나 ,
EuQueue시에도DeQueue시에도
Queue의 nitems=1 , 즉 Queue의 item이 한개가될때 Queue의 rear 와 front의 값이 그 아이템노드의 주소로 같게해주는 (Queue의 정의조건중하나) 코드가 없는것으로 보입니다.
그래서 제가 만든 코드를첨부하였구요.
확인부탁드립니다. 감사합니다!
1
안녕하세요? 군생활 중에 열심이시군요. 박수를 보냅니다.
이 경우는 원소가 1개일때(혹은 그 이상도 마찬가지입니다.) Enqueue와 Dequeue를 순차적으로 실행했을 때 각각
head와 rear가 어디를 가리키게 되는지 고민해보시면 좋을 것 같습니다.





