Java 中的雙向連結串列

Hiten Kanwar 2023年10月12日
Java 中的雙向連結串列

在連結串列中,每個元素都作為一個單獨的物件,具有資料部分和地址部分。它不使用具有傳染性的記憶體位置來儲存資料。雙向連結串列儲存前一個節點和下一個節點的地址。具有兩個地址節點允許雙向連結串列在兩個方向上遍歷。

本教程將討論 Java 中的連結串列。

在 Java 中,連結串列類是 Java 集合框架的一部分,它提供連結串列資料結構的功能,充當雙向連結串列。

這裡的每個元素都充當一個節點,由 3 個值組成,即 PrevNextData,位於一個位置。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 的地址。

每當新增新元素時,PrevNext 地址都會在內部自動更新。

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 中的雙向連結串列。

相關文章 - Java Linked List