Java 中的雙向連結串列
Hiten Kanwar
2021年6月29日
在連結串列中,每個元素都作為一個單獨的物件,具有資料部分和地址部分。它不使用具有傳染性的記憶體位置來儲存資料。雙向連結串列儲存前一個節點和下一個節點的地址。具有兩個地址節點允許雙向連結串列在兩個方向上遍歷。
本教程將討論 Java 中的連結串列。
在 Java 中,連結串列類是 Java 集合框架的一部分,它提供連結串列資料結構的功能,充當雙向連結串列。
這裡的每個元素都充當一個節點,由 3 個值組成,即 Prev
、Next
和 Data
,位於一個位置。Prev
儲存前一個元素的地址,Next
儲存下一個元素的地址,而 Data
儲存節點的實際資料。
例如,
import java.util.*;
public class ABC{
public static void main(String []args){
LinkedList<String> fruits = new LinkedList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("mango");
System.out.println("LinkedList: " + fruits);
}
}
輸出:
LinkedList: [apple, orange, mango]
在上面的例子中,我們已經通過 Java 的 Collections 框架成功建立了一個 Linked List。
在這裡,第一個節點的資料為 apple
,它的前一個節點為空值,其後節點為橙色地址。類似地,資料為 orange
的第二個元素的前一個地址是 apple,下一個是 mango
的地址。
每當新增新元素時,Prev
和 Next
地址都會在內部自動更新。
get()
方法用於訪問連結串列中的元素,連結串列從頭到元素進行迭代。我們還有 listIterator()
方法來訪問元件。next()
和 previous()
函式可以幫助在兩個方向上遍歷列表。
此外,我們可以使用 set()
方法來更改連結列表元素。remove()
函式可以刪除一個元素。
我們在以下示例中使用其中一些函式。
import java.util.*;
public class ABC{
public static void main(String []args){
LinkedList<String> fruits = new LinkedList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("mango");
String str = fruits.listIterator(1).previous();
System.out.println("i like " + str);
}
}
輸出:
i like apple
在上面的例子中,我們使用 previous()
函式訪問了索引 1 處元素之前的值。
我們還可以使用資料和指標變數建立我們的類來模擬 Java 中的雙向連結串列。