当前位置: 首页 > 知识库问答 >
问题:

双链接列表最后删除

韩彬
2023-03-14

我有一个头和lastNode的参考。嗨我有个问题。当我删除双向链表中的最后一个节点时,我必须将该节点的前一个引用设置为空,或者我可以离开它。我在删除lastNode时做了这样的事情。

lastNode = lastNode.prev; // lets lastNode reference the new last node
lastNode.next = null; // removes link to the old last node

当我使用toString方法时,它会按预期打印。只是想知道是否有必要将旧的last node prev设置为null。或者垃圾收集器只是删除它,因为没有对它的引用,即使旧节点仍然有对链接列表中某个节点的引用

共有1个答案

钱和平
2023-03-14

如果有任何方法可以访问新删除的lastNode对象,则只需要将引用更新为null。如果没有办法通过遍历列表到达这个节点,那么你应该不用担心。

不过,为了以防万一,进行这种清理是一种很好的做法。

 类似资料:
  • 我正在做一个双链表的实现。我希望链表有一定的长度限制。当列表变长时,删除最后一个节点。我这里有些问题。我想定义尾巴,这样我就不必寻找终点。下面是我正在研究的实现,它将允许长度为4,然后开始删除最后一个节点。 它似乎在删除最后一个节点,但之后会打印一些奇怪的符号。我猜这是我如何释放的问题,但我想不出来。注意:此代码中的一些代码取自https://gist.github.com/mycodeschoo

  • 问题内容: 我正在练习使用链表节点,遇到了一个我不知道如何回答的问题。如何删除链接列表中的最后一个节点。下面的代码适用于所有条目的最后一个节点。最后一个不会被删除。 节点类别 主要 问题答案: 我想您的最后一个元素失败了。最后一个元素将没有元素。因此,不会将最后一个元素与传递的字符串进行比较。您应该使用调试器进行跟踪。

  • 每次我运行我的双链接列表时,除了从列表后面删除外,所有方法都有效。我有一张4,3,9的单子。我从前面拆下(这拿走了4个)。然后,我调用了这个方法,它应该只删除9。相反,当我调用DL列表时,它返回null(这也删除了3)。请帮忙。 下面是代码的其余部分(它扩展了一个接口;生成的代码对于这个问题不是必需的,所以我们没有填写它。也就是说,节点后面的内容无关紧要)正确的代码:

  • 我已经得到了实现双向链表的框架。我被PushFront()方法难住了。方法应该将提供的元素添加到链表的前面,并且应该将地址返回到新的头节点。我对如何访问列表的当前头部感到困惑,以便我可以将其分配给pNext指针。到目前为止,PushTop()方法看起来是这样的: 元素类构造函数: 数据类: 主要: 我的理解是,您通常会在调用PushFron()时提供头的地址,但是因为我没有提供,我不确定如何访问它

  • 在下面的双向链表示例中,我可以将节点添加到双向链表的前面和双向链表的末尾。我还可以向前遍历双向链表并成功打印节点的值。当我向后打印列表时,我的tail.previous值为空,我只能打印当前在尾部的节点值。请告诉我出了什么问题。谢谢。 测试代码如下:公共类DDLTest{

  • 我有麻烦删除双向链表中的节点,程序崩溃,我不能解决这个问题。你能帮我吗?这是创建新节点,查看它们并删除它们的完整代码。 我认为这个问题与Node del的scanf()有关,但我不确定。当我只是通过或