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

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