炎炎設(shè)計(jì)
2023-09-13 18:08:42
我不明白為什么下面的方法有效。顧名思義,它刪除鏈接列表中的所有空值,列表的前面稱為head。我知道該變量的別名head是使用 創(chuàng)建的Node<E> current = head,但我無(wú)法弄清楚該方法如何設(shè)法維護(hù)原始頭變量。從表面上看,電流隨著每次迭代(current = current.next或)而變得越來(lái)越小,但不知何故,當(dāng)打印出鏈表時(shí),仍然保留了current.next = current.next.next一個(gè)完整且準(zhǔn)確的變量。head我確信這個(gè)答案一定非常簡(jiǎn)單,但我卻無(wú)法理解。public void remove_nulls() { while (head!=null && head.data==null) { removeFirst(); } if (head==null) { return; } // List is non-empty and does not start with a null item Node<E> current=head; while (current.next!=null) { if (current.next.data==null) { current.next=current.next.next; size--; } else { current = current.next; } }}
1 回答

慕碼人8056858
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
我知道 head 變量的別名是用以下命令創(chuàng)建的
Node<E> current = head
此聲明不正確,因?yàn)?code>current它不是“別名”,而是指向與 相同地址的新引用head
。因此,當(dāng)您重新分配引用時(shí),current = current.next
引用head
不會(huì)改變,它仍然會(huì)指向它所指向的地址,并且current
會(huì)指向下一個(gè)元素。
換句話說(shuō),如果列表的第一個(gè)元素不是null
,則head
引用不會(huì)更改,并且在方法完成時(shí)仍指向同一元素。所有其他null
元素都被這一行刪除current.next = current.next.next;
::
添加回答
舉報(bào)
0/150
提交
取消