void insert(list *head, char d){
list *p=head;
p = (list*)malloc(sizeof(list)); // 새로운 공간 확보
p->data = d;
p->next = head->next;
head->next = p;
}
오랜만에 하니까 도통 모르겠네요 ㅜ
위에 보시는게 삽입부분인데요.. 저렇게 하면 메모리상에 어떻게 기억되어있는건가요?
프로그램 다 끝나고 free해줘야 된다고 배웠는데..
어떻게 해줘야되는건가요 free() 괄호 안에 변수이름 적어야되는데 뭘 적어야 되는지 잘모르겟네요 ㅜ
단방향 리스트의 구조에는 list*형인 head가 있고 이 데이터는 리스트의 처음 구조체를 가르키고 있겠지요.
그 구조체의 next에는 다음 리스트의 구조체를 가르키고 있고
다시 그 구조체의 next는 다음 리스트의 구조체를 가르키고 있습니다.
head -> (list)1 -> (list)2 -> (list)3... 이런식으로 가르키고 있는 것이지요.
free할때는 처음부터 링크를 쫒아가면서 free시키면 됩니다. free()의 괄호안에는 지우고자 하는 데이터의 포인터를 가르키면 되구요..