gpt4 book ai didi

java - 从双向链表中删除所有出现的给定值

转载 作者:行者123 更新时间:2023-12-02 01:37:55 27 4
gpt4 key购买 nike

好吧,长话短说,我在这里想做的是从双向链表中删除值 e 的所有实例。据我所知,我的逻辑至少大部分是正确的,但由于某些原因,它实际上并没有删除我的测试用例中的任何节点。

public boolean removeAll(int e) {

DIntNode dummy = head,next = null;
if (head == null)
return false;
while (dummy != null) {
if (dummy.getData() == e) {
next = dummy.getNext();
dummy.getNext().setPrev(null);
dummy = next;
return true;
}
else
dummy = dummy.getNext();
}
return false;
}

这就是我目前的方法代码。可以这么说,我的逻辑是使用从头部开始的虚拟 DIntNode 和“下一个”节点来帮助我缩小列表。换句话说,如果列表类似于“1<-> 1 <-> 2 <-> 3”,理论上该函数会将其更改为“2<->3”。这是一个 boolean 函数的原因是因为如果给定值从列表中删除,我需要返回 true。

我是否缺少逻辑中的另一个步骤,或者方法本身不可靠?我现在非常不确定,所以任何和所有的帮助将不胜感激。

最佳答案

你设置

dummy.getNext().setPrev(null);

但是前一个节点也引用了您尝试删除的下一个节点。您应该将此引用设置为下一个 Activity 值。那是因为当您想要获取所有链表的前一个值仍然知道您删除的节点时,因为下一个节点引用

关于java - 从双向链表中删除所有出现的给定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54941532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com