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


感谢提出问题:)

0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程