任何人都可以解釋爲什麼下面的刪除方法不起作用?它似乎創建一個無限循環在我試圖刪除的值。它應該循環遍歷鏈表,刪除傳遞給該方法的值的所有實例,並返回刪除的節點總數(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'似乎沒有一個點 –