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

标签 java

好吧,长话短说,我在这里想做的是从双向链表中删除值 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/

相关文章:

java - ZipException:重复输入异常

java - 列表 WebElement 始终从下拉列表中选择第一个元素,但我想选择第四个元素

java - 可变参数函数歧义

java - 我是编程新手,我无法理解这段代码

java - 生成EAR文件时如何在代码中创建application.xml?

java - BigDecimal 没有做加法操作

java - 如何使用RandomAccessFile将UTF8数据写入xml文件?

java - 由于存在粘性按钮而无法单击按钮

java - Java 中的 Kafka 消费者

java - 跳过继承树中的类实现