1 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
可視化列表的構(gòu)建方式可能會(huì)有所幫助:
讓輸入是一個(gè)列表,其中包含值 [3, 9] 和另一個(gè)只有 [4] 的列表:
l1
↓
3 → 9 → null
l2
↓
4 → null
在循環(huán)開始之前創(chuàng)建一個(gè)新節(jié)點(diǎn):
head
↓
-1
↑
dummy
循環(huán)將進(jìn)行第一次迭代,并且if條件為真。首先dummmy.next是適配,導(dǎo)致出現(xiàn)這種情況:
head l1
↓ ↓
-1 → 3 → 9 → null
↑
dummy
l2
↓
4 → null
...然后l1重新分配一個(gè)新的參考:
head l1
↓ ↓
-1 → 3 → 9 → null
↑
dummy
l2
↓
4 → null
循環(huán)中的最后一條語句為 分配了一個(gè)新引用dummy:
head l1
↓ ↓
-1 → 3 → 9 → null
↑
dummy
l2
↓
4 → null
循環(huán)第二次迭代,if現(xiàn)在條件為假,所以我們進(jìn)入else代碼塊。Firstdummmy.next被改編(這打破了它與 的鏈接l1,所以我移動(dòng)了l1和的可視化l2):
head l2
↓ ↓
-1 → 3 → 4 → null
↑
dummy
l1
↓
9 → null
...然后l1重新分配一個(gè)新的引用,在這種情況下它變成null:
head l2
↓ ↓
-1 → 3 → 4 → null
↑
dummy
l1
↓
9 → null
循環(huán)中的最后一條語句為 分配了一個(gè)新引用dummy:
head l2
↓ ↓
-1 → 3 → 4 → null
↑
dummy
l1
↓
9 → null
在此階段,循環(huán)條件不再為真 ( l2is null),因此if執(zhí)行循環(huán)后面的塊。這dummy.next與其余(不是null)參考鏈接。同樣,為了可視化,我交換了l1和的位置l2:
head l1
↓ ↓
-1 → 3 → 4 → 9 → null
↑
dummy
l2
↓
null
現(xiàn)在我們到了最后的聲明:return head.next。請(qǐng)注意headdid 從未離開在開始時(shí)創(chuàng)建的新節(jié)點(diǎn)。
所以返回的引用是:
head l1
↓ ↓
-1 → 3 → 4 → 9 → null
↑
returned
l2
↓
null
注意head在這個(gè)函數(shù)的整個(gè)執(zhí)行過程中如何一直指向帶有 -1 的節(jié)點(diǎn)。head值為 -1 的臨時(shí)節(jié)點(diǎn)將被垃圾回收,因?yàn)橐坏┖瘮?shù)返回(是局部變量) ,就沒有變量再引用它。
添加回答
舉報(bào)