【发布时间】:2016-10-12 18:45:04
【问题描述】:
我很难删除单个函数中链接中的所有成员。如果我像您在下面看到的那样分解它,它可以正常工作,但这似乎非常低效,并且想要找出正确的方法来做到这一点。为了释放所有节点,我需要先释放除头部以外的所有节点,然后释放头部链接的功能。这似乎很容易做到,但我遇到了麻烦。
感谢您的帮助!
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;”的错误它说“表达式必须具有指向结构或联合类型的指针”
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()。如果您提出您尝试过的东西,因此您的问题会更清晰,并且会为答案提供更多吸引力,因此具有您想要的形式,但这对您不起作用。 -
@JohnBollinger 谢谢!我在上面添加了我想要工作的代码
标签: c function linked-list free double-pointer