有人可以解释为什么以下删除方法不起作用?它似乎在我试图删除的值上创建一个无限循环。它应循环遍历链表,删除传递给该方法的值的所有实例,并返回已删除的节点总数(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;
}
答案 0 :(得分:0)
您永远不会更改next
的值。
if(trav.getValue().compareTo(value) == 0) {
trav = next;
num++;
}
if(next.getValue().compareTo(value) == 0) {
trav = next.getNext();
num++;
}
由于下一次永远不会改变,因此您每次都会在第二个if
中比较相同的值。