第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 LinkedList 中刪除中間節(jié)點?

如何從 LinkedList 中刪除中間節(jié)點?

拉風的咖菲貓 2024-01-05 16:21:04
我試圖從有權(quán)訪問該節(jié)點的鏈表中刪除中間節(jié)點。我想知道下面的兩種方法是否有區(qū)別,或者它們完成相同的事情嗎?public boolean deleteMiddle(Node middle){    Node next = middle.next; //line 2    middle.data = next.data;    middle.next = next.next;    return true;}public boolean deleteMiddle(Node middle){    middle.data = middle.next.data;    middle.next = middle.next.next;    return true;}第一種方法是教科書推薦的方法,但似乎在第一種方法(第 2 行)中創(chuàng)建“下一個”節(jié)點是不必要的代碼行。
查看完整描述

3 回答

?
ibeautiful

TA貢獻1993條經(jīng)驗 獲得超6個贊

我認為你可能是對的,它們是等價的(或者看起來確實是這樣)

在這兩種情況下,如果要刪除的項目是列表中的最后一項(例如,如果 next 為 null,則 next.next 是錯誤),則看起來會出現(xiàn)空指針異常(在 next.next 上)。

如果你通過了 null,當然這也將成為 NPE。


查看完整回答
反對 回復 2024-01-05
?
紫衣仙女

TA貢獻1839條經(jīng)驗 獲得超15個贊

在第一個方法(第 2 行)中創(chuàng)建節(jié)點“next”是不必要的代碼行。

兩個片段都達到相同的結(jié)果。

但是額外的變量賦值(它不會“創(chuàng)建節(jié)點”,它只是為現(xiàn)有節(jié)點分配一個新名稱)所做的是避免調(diào)用middle.next兩次,避免兩次執(zhí)行相同的“計算”。

在此示例中,這不會產(chǎn)生任何真正的區(qū)別,但一般來說,它可以是一種常見的性能優(yōu)化,以避免冗余工作(特別是如果涉及執(zhí)行一些“繁重工作”的方法調(diào)用)。不過,在進行這些冒險之前,應(yīng)該考慮是否值得讓代碼變得不太易讀,特別是考慮到 JVM 將嘗試自動進行各種優(yōu)化。因此,僅將這種心態(tài)應(yīng)用于簡單的模式或真正的瓶頸。

最重要的是,為中間結(jié)果命名也可以產(chǎn)生更多不言自明的代碼(這里也沒有太大區(qū)別)。

最后的評論:有時(但不是這里)有必要引入額外的變量來臨時存儲一些東西,否則這些東西會在操作過程中被覆蓋,例如著名的int h = x; x = y; y = h;例子。


查看完整回答
反對 回復 2024-01-05
?
桃花長相依

TA貢獻1860條經(jīng)驗 獲得超8個贊

是的,它們是等價的。我更喜歡第一個,因為它避免了表達式的重復middle.next。

正如@Rick 指出的,當middle是最后一個元素時,在這兩種情況下你都會得到一個 NPE。


查看完整回答
反對 回復 2024-01-05
  • 3 回答
  • 0 關(guān)注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號