亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

以下程序是關于linkedlist中的addfirst()的問題,麻煩知道的幫忙看一下~

以下程序是關于linkedlist中的addfirst()的問題,麻煩知道的幫忙看一下~

桃花長相依 2022-01-18 15:11:17
publicvoidaddFirst(Ee){addBefore(e,header.next);}、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、privateEntry<E>addBefore(Ee,Entry<E>entry){Entry<E>...
查看完整描述

1 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

LinkedList里儲存的其實是Entry而不僅僅是外面看上去的元素,每個Entry里有三個元素:值本身,排在這個Entry前的那個Entry,排在這個Entry后的那個Entry。表里的所有Entry就這樣前后一個鉤一個連在一起,這就是為什么這種List叫LinkedList的原因。

現在已經有一個LinkedList了,我要往里加一個新元素,而且指定要加在某Entry(我們叫它x,程序里它叫entry)之前,也就是要插在x和x前面那個Entry(我們叫它y,也就是x.previous)之間,那么新的Entry是怎么樣的呢?它里面的三個元素是新元素值(e),它前面的那個Entry(自然是y),它后面那個Entry(自然是x),所以有這句
Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);
有了這句還不夠,還得把原來y和x之間的連接敲斷,重新接到這個新加的Entry上。newEntry.previous(就是y)的后一個Entry就是新Entry:
newEntry.previous.next = newEntry;
而newEntry.next(就是x)的前一個Entry也是新Entry:
newEntry.next.previous = newEntry;

查看完整回答
反對 回復 2022-01-23
  • 1 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號