단일 함수에서 링크 된 모든 멤버를 삭제하는 데 어려움을 겪고 있습니다. 아래에서 보는 것처럼 그것을 해체하면 잘 작동하지만 이것은 비효율적으로 보이며이를 수행하는 올바른 방법을 찾아야합니다. 모든 노드를 해제하려면 먼저 다른 노드의 모든 노드를 해제 한 다음 헤드 링크를 해제하는 기능이 있어야합니다. 이것은 쉽게 할 수있는 것처럼 보이지만 문제가 있습니다.함수를 사용하여 이중 포인터로 연결된 목록을 해제하십시오.
도움 주셔서 감사합니다.
int main() {
struct node *head = NULL;
createList(&head);
//do stuff with list
freeListMembers(head);
freeListHead(&head);
return 0;
}
int createList(struct node **head) {
//create list
return 0;
}
void freeListMembers(struct node *head){
while(head->next != NULL){
head->next = NULL;
free(head->next);
}
return;
}
void freeListHead(struct node **head) {
*head = NULL;
free(*head);
return;
}
여기는 내가하고 싶은 코드이지만 그렇지 않습니다. 내가보고있는 문제는 "* head-> next"오류입니다. 이 SAIS 곳 코드에서
int main() {
struct node *head = NULL;
createList(&head);
//do stuff with list
freeAllListMembers(&head);
return 0;
}
int createList(struct node **head) {
//create list
return 0;
}
void freeAllListMembers(struct node **head){
while (head != NULL) {
struct node *temp = *head->next;
free(*head);
*head = temp ;
}
return;
}
당신 * * 머리와 모든 구성원을 해제하는 기능을 수행합니다. 이름은'main()'입니다. 당신의 질문은 더 분명 할 것이고, 당신이 시도한 것을 선물한다면, 당신이 원하는 형태를 가지고 있지만, 그것은 당신을 위해 일하지 않습니다. –
@ 존 볼링거 THanks! 위의 코드에서 작업하고자하는 코드를 추가했습니다. – skevthedev