我最近做了一个带有双链表的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/