Delete Node 这题似乎是不适用于 删除 单链表最后一个Node 的
来源:5-5 不仅仅是穿针引线 Delete Node in a Linked List
stcheng1982
2017-10-05
老师在示例代码中 针对是链表最后一个元素情况采用了 delete 给定的node 并将其设置为NULL。 但是实际情况是 函数参数传入的指针变量设置为NULL 并不会对函数调用者(上层堆栈中链表的前一个元素的next 产生影响)。因此这种情况下我的理解是 node 所指的内存被释放了,但是函数调用者中原先node前一个节点的next仍然指向那块已经被释放的地址,是有隐患的。不知是不是这样呢
LeetCode 上原题 有说明是 除了最后一个节点以外的情况。
谢谢
写回答
1回答
-
liuyubobobo
2017-10-06
你是对的哦。这一小节视频中讲解的代码针对链表的最后一个元素是有问题的。在这个课程的最新代码中,已经在具体运行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
感谢提出问题:)
00
相似问题