如果您的目標是編寫一個函數來刪除單向鏈接列表中的節點,並且您只能訪問要刪除的節點(而不是指定的節點),爲什麼不能我的解決方案工作從單個鏈接列表中刪除節點
我的解決辦法:
public void deleteNode(Node n) {
n = n.next;
}
本書的解決方案:
public void deleteNode(Node n) {
n.data = n.next.data;
n.next = n.next.next;
}
在我看來,這僅僅是爲了n.next分配n取在一行分配數據和指針的照顧。
本書的解決方案存在固有的弱點。跟蹤'last'元素是不可能的,因爲移除最後一個元素需要全部遍歷才能將引用重置爲'last'元素。因此,無論是追蹤最後一個元素的引用,並在每次刪除最後一個元素時執行完整列表遍歷,或者不追蹤最後一個元素,並且每次將元素添加到列表的末尾時執行完整遍歷。伊克。 –
是的,這實際上並不是本書解決方案的全部內容。我剛剛發佈了我有一個問題的部分。 –