2017-04-21 52 views
1

我最近用双链表做了一个java代码。但是,似乎这个删除方法有一段时间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"); 
    } 
} 

回答

0

while循环只有在温度(在列表中的下一个对象)为空意味着它会通过对象,直到结束的整个列表循环,即使你已经找到删除的项目终止。这可以通过在while循环中添加一个额外的条件(如布尔值)来解决,以确保在列表中找到要删除的对象时它会提前终止。

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

通过一个循序渐进的方式来追踪循环以查看到底发生了什么以及问题出在哪里,这总是一个好主意。