请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Delete Node 这题似乎是不适用于 删除 单链表最后一个Node 的

老师在示例代码中 针对是链表最后一个元素情况采用了 delete 给定的node 并将其设置为NULL。 但是实际情况是 函数参数传入的指针变量设置为NULL 并不会对函数调用者(上层堆栈中链表的前一个元素的next 产生影响)。因此这种情况下我的理解是 node 所指的内存被释放了,但是函数调用者中原先node前一个节点的next仍然指向那块已经被释放的地址,是有隐患的。不知是不是这样呢

LeetCode 上原题 有说明是 除了最后一个节点以外的情况。

谢谢

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2017-10-06 00:44:09

你是对的哦。这一小节视频中讲解的代码针对链表的最后一个元素是有问题的。在这个课程的最新代码中,已经在具体运行deleteNode前使用assert检查当前节点不是链表的最后一个节点了。可以参考:https://github.com/liuyubobobo/Play-with-Algorithm-Interview/blob/master/05-About-Linked-List/Course%20Code%20(C%2B%2B)/05-Delete-Node-in-a-Linked-List/main.cpp


感谢提出问题:)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信