답변 2
0
g_pHeadNode는 USERDATA* 입니다. 단순 포인터일 뿐 노드가 아닙니다. 다시 말해 삭제되는 노드의 prev 노드가 아닙니다. 더미 헤드 노드를 만들지 않고 헤드 노드에 대한 포인터만 있는 경우라 하겠습니다. 참고하시기 바랍니다. :)
0
일반적으로 포인터 변수는 null로 초기화 하기 때문입니다. 그리고 헤드 노드에 대한 포인터를 갖는 구조의 연결 리스트에서 최초 프로그램 시작 시 리스트에는 아무 노드도 없기 때문에 null로 초기화 하는 것이 타당하다 할 수 있겠습니다. 참고하시기 바랍니다. :)
정보가 부족했습니다. 죄송합니다. 제가 여쭤보는 것은 초기화 될때의 g_pHeadNode를 말씀드리는게 아니라, 노드가 하나 있을 때 그러니까 g_pHeadNode->Hoon노드 예를 들어 이렇게 있을 때 Hoon노드를 remove한다 그러면 RemoveNode에 매개변수로 g_pHeadNode가 들어가는데 이게 처음에 ==Null 여기에 걸리는 것이 잘 이해가 안갑니다. g_pHeadNode는 Hoon노드를 가리키고 있는데 왜 null 인지 이해가 안갑니다 ㅠ
void RemoveNode(USERDATA* pPrev)
{
USERDATA* pRemove = NULL;
if (pPrev == NULL) //맨 첫 노드(g_pHeadNode 다음) 삭제하면, pPrev는 g_pHeadNode이고 null임???-----> 요부분입니다.
{
if (g_pHeadNode == NULL)
return;
else
{
pRemove = g_pHeadNode;
g_pHeadNode = pRemove->pNext;
free(pRemove);
}
return;
}
pRemove = pPrev->pNext;
pPrev->pNext = pRemove->pNext;
free(pRemove);
}