我目前正在使用Java學(xué)習(xí)算法,剛剛開始學(xué)習(xí)java雙向鏈表算法。我部分理解了它背后的概念,但是我完全理解了單鏈表。在單鏈表中,linkedList 類將始終記住列表中最后一個鏈接,而最后一個鏈接之前的所有其他鏈接將依次記住其先前鏈接的引用。據(jù)我了解,雙重列表在這里所做的是它們記住列表的下一個和上一個鏈接。但到了實施的時候就很難理解了。例如,當(dāng)我考慮如何為尾部或頭部添加新鏈接時,我完全感到困惑。任何人都可以解釋一下雙向鏈表實際上是什么。如果那么您可以提供示例代碼嗎?
1 回答

波斯汪
TA貢獻(xiàn)1811條經(jīng)驗 獲得超4個贊
一排孩子,每個孩子一只手放在前面孩子的肩膀上,這是一個鏈表。每個孩子都知道他們前面的孩子,但不知道他們后面的孩子。在 Java 中,列表中的每個元素都有一個成員,用于引用下一個元素。
孩子們手拉手排成一排,每個人都認(rèn)識前面的孩子和后面的孩子。所以是一個雙向鏈表。在Java中,每個元素都有兩個成員,分別用于引用前面的元素和后面的元素。
插入元素涉及更改四個引用。
將前導(dǎo)元素的“回顧”引用設(shè)置為指向新元素。
新元素的“向前”引用被設(shè)置為指向該前導(dǎo)元素。
并且您更改尾隨元素的“前向”引用以指向新元素。
新元素的“回顧”引用被設(shè)置為指向該尾隨元素。
每個元素的內(nèi)容或有效負(fù)載是位于內(nèi)存中其他位置的對象。每個元素都帶有一個指向其有效負(fù)載對象的指針。
因此,雙向鏈表只是一系列三重指針(引用)。第一個和最后一個元素的 3 個指針中的一個都設(shè)置為 null。
添加回答
舉報
0/150
提交
取消