繁体   English   中英

链表删除方法

[英]Linked List Delete Method

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

由于未来永远不会改变,你在第二个比较相同的值if每次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM