删除节点时,为什么不需要将该节点的 next 设置为 null?

When removing a node, why isn't it necessary to set that node's next to null?

我注意到网上很多代码都是针对单个LinkedList的删除节点或删除节点功能,只是将要删除的节点的前一个节点设置为下一个节点。但是那不是不完全删除,因为删除的节点仍然指向它的下一个?

例如

A->B->C

如果删除B,则应使A指向C。但是,如果你不让 B 指向 null,那么 B 是否仍然存在,因为它指向 C

同样,对于 java 中的双向链表,如果您要删除一个节点,您是否需要确保该节点不再指向任何内容才能真正删除它?

if you don't make B point to null, doesn't B still exist because it's pointing to C?

没有。原因是因为没有任何指向 B 的引用,它将被垃圾收集。它 (B) 是否仍然指向某物并不重要。

Like wise, for a doubly linkedList in java, if you were deleting a node wouldn't you need to make sure that the node is no longer pointing to anything for it to be truly deleted?

原理是一样的。改变的是需要改变两个引用:被删除节点的前一个节点(使其指向被删除节点的下一个)和被删除节点的下一个(使其指向该节点的前一个)正在删除)。

当没有对被删除节点的引用时,这将被垃圾收集。

一般,当没有指向某个对象的引用时,这将在某个时候被垃圾收集。


这里有一个非常相似的post,可能对你有用:Garbage collector in java - set an object null

我猜你是在谈论 Javas LinkedList<>。这可能是因为垃圾收集器会得到它。

No.It 将是垃圾 collected.Unreachable 不再被程序的任何部分引用的对象将被垃圾收集器清除 java.Garbage 收集器通过销毁释放堆内存无法到达的对象。