我最近制作了一个带有双链表的java代码。但是,似乎这个remove方法有一段时间用于循环,我无法弄清楚。
如果有人可以帮助我验证这一点,那就太好了。我已经得出结论,这个特定的方法有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");
}
}
答案 0 :(得分:0)
如果temp(列表中的下一个对象)为null,则while循环仅终止,这意味着它将遍历整个对象列表直到结束,即使您已找到要删除的项目。这可以通过在while循环中添加一个额外的条件(如布尔值)来修复,以确保在列表中找到要删除的对象时它会提前终止。
boolean removed = false;
while(temp != null && !removed) {
//search list for item to remove
//when the item has been removed, set removed = true;
}
通过一个案例逐步跟踪循环,以确切了解正在发生的事情以及问题所在,这始终是个好主意。