[英]Undefined behaviour on deleting a node in linked list
所以我试图删除双向链表中的一个节点,只给出一个指向该节点的指针。 这是我的代码:
void deleteNode(Node* node) {
if(node == NULL) {
return;
}
if(node->next != NULL) {
node->next->prev = node->prev;
}
if(node->prev != NULL) {
node->prev->next = node->next;
}
node->next = NULL; node->prev = NULL;
free(node);
node = NULL;
}
当我尝试删除单个节点时,头指针仍然不是 NULL。 相反,如果我尝试打印密钥,它会给出一些随机值。 什么可能导致这种行为? 有什么解决办法吗?
node = NULL;
什么也没做。 node
是一个局部变量,当 function 返回时它不再存在。
void deleteNode(Node **node)
{
if(node && *node)
{
if((*node)->next) (*node)->next->prev = (*node)->prev;
if((*node)->prev) (*node)->prev->next = (*node)->next;
free(*node);
*node = NULL;
}
}
如您所见,代码可以减少到几行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.