如何释放单链表并将头节点置为NULL?代码正确性及验证咨询
问题解答
1. 该函数能否将头节点置为NULL?
可以。你的free_list函数接收的是头指针的二级指针(list **head),函数末尾的*head = NULL语句直接修改了外部传入的头指针变量的指向,而非仅修改函数内部的临时变量,因此能成功将原头节点置为NULL。
2. 如何检查头节点是否已被设为NULL?
有两种简单的检查方式:
- 条件判断验证:调用
free_list后,直接判断原头指针变量是否等于NULL,示例代码:
// 假设原头指针为list *my_list; free_list(&my_list); if (my_list == NULL) { puts("头节点已被置为NULL"); } else { puts("头节点未被置为NULL"); }
- 打印指针地址验证:通过打印指针的地址值判断,若输出为
(nil)或0x0(不同编译器输出略有差异),则说明已置为NULL,示例代码:
free_list(&my_list); printf("头指针地址: %p\n", (void*)my_list);
内容的提问来源于stack exchange,提问作者Leuel Asfaw
相关产品推荐
相关产品推荐

