采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在C++中,delete一个指针,表示将指针所指向的空间释放,但是这个指针本身还是会存储这个地址。此时访问这个地址是危险的(不一定报错,但是此时这个地址将来可能另作他用,而错误的访问这个指针的内容将会造成非常难以察觉的错误)。一般习惯在删除一个指针所指向的空间后,显示地为这个指针本身赋值为NULL。通常认为这样更安全。因为此时错误的访问这个指针,一定会因为访问了空指针而程序直接中断,使得容易找到错误的根源,但这不是必须的,属于一种编程习惯。
在网上搜一搜,还会有很多人探讨,C++标准应该自动将delete掉所指向空间的指针赋值为空。很有意思,比如这个:)
https://stackoverflow.com/questions/704466/why-doesnt-delete-set-the-pointer-to-null
加油!
意思是这里本身node=NULL是没什么用的只是一个编程习惯是吧,因为它马上就直接return了,node根本就不可能再用上。 还有一个地方不太明白,如果node->next为空,那么直接删除掉node之后,仍然找不到node的前驱,前驱的next应该指向为空,但它现在仍然指向以前的node地址。
在我们这段代码里,如果进入if(node->next==NULL)这段代码,意味着整个链表只有node一个节点。
不是说node->next为空说明node是最后一个节点嘛,为什么会只有一个节点,比如像链表 1->2->3->4->NULL, 给出node为第四个节点
登录后可查看更多问答,登录/注册
课程配套大量BAT面试真题,高频算法题解析,强化训练
1.0k 13
1.1k 12
610 11
1.5k 10
1.1k 10