任何人都可以解释为什么下面的删除方法不起作用?它似乎创建一个无限循环在我试图删除的值。它应该循环遍历链表,删除传递给该方法的值的所有实例,并返回删除的节点总数(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;
}
你可以使用你的调试器来遍历你的代码,但是有几件事显然是错误的。 a)你永远不会更新头部b)你永远不会改变'next',所以当你做'trav = next'时'这会把你带回到第二个元素。 c)你实际上并没有移除任何节点。 d)检查'if(next'似乎没有一个点 –