C语言 这是 DeleteList 函数的正确实现吗?[通过堆链接列表]



我必须编写一个函数 DeleteList((,该函数获取列表,释放其所有内存并将其头指针设置为 NULL(空列表(。

它似乎有效,但如果它真的有效,idk,因为我实现的方式(我认为是错误的方式(与解决方案中的方式非常不同。我假设它只删除几个节点或内存管理存在问题。

int Length(struct node* head)
{
int count = 0;
struct node* current = head;
while (current != NULL)
{
count++;
current = current->next;
}
return(count);
}
void DeleteList(struct node** headRef)
{
int len = Length(*headRef);
for(int i = 0;i<len;i++)
free(*headRef);
*headRef = NULL;
}

您实际上并没有释放整个链表,而是在反复释放头节点。 我建议您使用以下方法。

void DeleteList(struct node** headRef) { 
struct node *ptr = *headRef;
struct node *temp = NULL;
while(ptr)
{
temp = ptr;
ptr = ptr->next;
free(temp);
}
*headRef = NULL;
}

相关内容

  • 没有找到相关文章

最新更新