2 回答

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
Entry<E> newEntry = new Entry<E>(e,entry,entry.previous);
這句話new一個(gè)Entry,
Entry類本身的構(gòu)造方法有3個(gè)參數(shù):(E e,Entry next,Entry previous)
對應(yīng)于傳進(jìn)來的3個(gè)實(shí)參 (e,entry,entry.previous)
而傳進(jìn)來的entry本身是指向header.next的引用,header應(yīng)該是LinkedList的
頭結(jié)點(diǎn),本身無數(shù)據(jù),它指向的next才是LinkedList鏈表的第一個(gè)數(shù)據(jù)結(jié)點(diǎn)
接著newEntry.previous就是指向header,然后.next=newEntry就是將header的next引用指向newEntry,
同理,newEntry.next即為傳進(jìn)來的entry,即最開始的header.next,然后.previous=newEntry將enrty的previous引用指向newEntry
這樣,就完成了在header頭結(jié)點(diǎn)和原來的第一個(gè)結(jié)點(diǎn)之間插入一個(gè)結(jié)點(diǎn)的過程,即新插入的結(jié)點(diǎn)e就是header指向的第一個(gè)結(jié)點(diǎn)

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
其實(shí)只要知道雙向鏈表里面每個(gè)節(jié)點(diǎn)有兩個(gè)屬性,一個(gè)(previous)指向前一個(gè)節(jié)點(diǎn),而令一個(gè)(next)指向下一個(gè)節(jié)點(diǎn)。addBefore就是將新節(jié)點(diǎn)(e)添加到原來的節(jié)點(diǎn)的前面一個(gè)節(jié)點(diǎn),而由于是添加first,所以想當(dāng)于修改了原來的頭節(jié)點(diǎn)。
添加回答
舉報(bào)