链表删除方法



谁能解释为什么下面的删除方法不工作?它似乎在我试图删除的值处创建了一个无限循环。它应该循环遍历链表,删除传递给该方法的值的所有实例,并返回删除的节点总数(return num;)。

public int delete(T value) 
{
    int num = 0;
    ListNode<T> trav = head;
    ListNode<T> next = head.getNext();
    while(trav != null) {
      if(trav.getValue().compareTo(value) == 0) {
        trav = next;            
        num++;
      }
      if(next.getValue().compareTo(value) == 0) {
        trav = next.getNext();
        num++;
      }
      trav = trav.getNext();
    }   
    return num; 
}

不能更改next的值。

  if(trav.getValue().compareTo(value) == 0) {
    trav = next;            
    num++;
  }
  if(next.getValue().compareTo(value) == 0) {
    trav = next.getNext();
    num++;
  }

因为next永远不会改变,你每次都在第二个if中比较相同的值。

相关内容

  • 没有找到相关文章