【发布时间】:2013-01-03 05:04:15
【问题描述】:
我正在查看我在网上找到的以下链表代码:
void DeleteAfter(Node **head){
if(*head==NULL){
return;
}else{
Node *temp = NULL;
temp = (*head)->next;
(*head)->next = (*head)->next->next;
delete temp;
temp=NULL;
}
}
我对 C++ 不是很熟练,所以这可能是一个不好的问题,但是为什么 temp 被删除后被设置为 NULL 呢?这是必要的步骤吗?
【问题讨论】:
-
不要。只需使用智能指针。
-
这里是否设置为 NULL 完全无关紧要。
temp是一个具有自动存储功能的变量,这意味着它会在退出else块后超出范围。但正如@chris 所说,只需使用智能指针 -
另外,
*head不是NULL的事实并不意味着(*head)->next不是NULL,您正在尝试取消引用该指针 ((*head)->next->...)
标签: c++