인프런 커뮤니티 질문&답변

khb4435님의 프로필 이미지
khb4435

작성한 질문수

독하게 C를 배운 사람을 위한 선형 자료구조

삭제 및 결과 검증 코드 작성

g_pHeadNode

해결된 질문

작성

·

360

·

수정됨

0

g_pHeadNode는 왜 주솟값을null로 갖고있나요?

답변 2

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

g_pHeadNode는 USERDATA* 입니다. 단순 포인터일 뿐 노드가 아닙니다. 다시 말해 삭제되는 노드의 prev 노드가 아닙니다. 더미 헤드 노드를 만들지 않고 헤드 노드에 대한 포인터만 있는 경우라 하겠습니다. 참고하시기 바랍니다. :)

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

일반적으로 포인터 변수는 null로 초기화 하기 때문입니다. 그리고 헤드 노드에 대한 포인터를 갖는 구조의 연결 리스트에서 최초 프로그램 시작 시 리스트에는 아무 노드도 없기 때문에 null로 초기화 하는 것이 타당하다 할 수 있겠습니다. 참고하시기 바랍니다. :)

khb4435님의 프로필 이미지
khb4435
질문자

정보가 부족했습니다. 죄송합니다. 제가 여쭤보는 것은 초기화 될때의 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);

}

khb4435님의 프로필 이미지
khb4435

작성한 질문수

질문하기