java - 双链表中删除方法内部的未知 for 循环?

标签 java linked-list

我最近做了一个带有双链表的java代码。然而,这个删除方法似乎有一个 while for 循环,我无法弄清楚。

如果有人能帮我验证这一点,那就太好了。我已经得出结论,这个特定方法中有 for 循环。

public void remove(Node value){
    Node temp = head;
    while(temp != null){
        if(value.food.equals(temp.food)){
            addtofront(temp);
            if(temp.next == null){
                temp.back.next = null;
                temp.back = null;
            }
            else{
                temp.back.next = temp.next;
                temp.next.back = temp.back; 
        }
        }
        temp= temp.next;
        System.out.println("Print");
    }
}

最佳答案

while 循环仅在 temp(列表中的下一个对象)为 null 时终止,这意味着它将迭代整个对象列表直到结束,即使您已找到要删除的项目。这可以通过添加额外的条件来解决,例如将 boolean 值删除到 while 循环,以确保如果在列表中找到要删除的对象,它将提前终止。

boolean removed = false;
while(temp != null && !removed) {
//search list for item to remove
//when the item has been removed, set removed = true;
}

一步一步地跟踪一个案例的循环,以准确了解发生了什么以及问题出在哪里,总是一个好主意。

关于java - 双链表中删除方法内部的未知 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43553590/

相关文章:

java - Java中从BufferReader读取字符字段

java - 查找长度为 N 的重复子串

java - 使用您的 GMail 收件箱空间?

java - com iplanet ias JAR

javascript - 插入链表得到TypeError : Cannot set property 'next' of undefined

java - for 循环内两个嵌套 while 循环的运行时间

c - 将文本文件读入链表而不使用数组作为缓冲区?

java - 开关选择错误的 int case

c++ - 反转给定大小的链表时出现段错误

C:段错误:在 NetBeans (OS X) 上运行,但在 Linux 上不运行