谁能解释为什么下面的删除方法不工作?它似乎在我试图删除的值处创建了一个无限循环。它应该循环遍历链表,删除传递给该方法的值的所有实例,并返回删除的节点总数(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
中比较相同的值。