链接列表删除方法

时间:2016-09-21 01:45:01

标签: java linked-list

有人可以解释为什么以下删除方法不起作用?它似乎在我试图删除的值上创建一个无限循环。它应循环遍历链表,删除传递给该方法的值的所有实例,并返回已删除的节点总数(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; 
}

1 个答案:

答案 0 :(得分:0)

您永远不会更改next的值。

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

由于下一次永远不会改变,因此您每次都会在第二个if中比较相同的值。