2학년 입니다. ㅜㅜ 방학때 자료구조 공부 중인데요ㅕ./...
void sl_release()
{
while(head !=NULL)
{
head = head -> next;//head노드를 한칸 앞으로 움직이고
free(head); //그전 노드의 메모리를 해제한다.
}
이렇게 하면 안되는 이유가...
모범 답안이 밑에거 인데...
void sl_release()
{
node*temp;//임시로 노드 포인터 생성
//head가 널이 아니라면
while(head !=NULL)
{
temp = head; //임시노드에 head를 넣고
head = head -> next;//head노드를 한칸 앞으로 움직이고
free(temp); //그전 노드의 메모리를 해제한다.
}
차이점을 모르겠네요.//
head = head -> next; 에서 head->next가 head로 바뀐다. free(head)에서 head가 쓰레기가 되니 head->next는 댕글댕글링포인터가 된다. 그래서 temp를 통해 head->next란 포인터를 미리 받아두고 head를 해제한다
아니 head란 포인터를 미리 받아두고요
포인터와 자료구조는 그림을 그려보면 모두 이해가 됩니다