Java 資料結構 - 雙向連結串列
雙向連結串列是連結串列的一種變體,與單向連結串列相比,它可以輕鬆地向前和向後導航。以下是一些瞭解雙向連結串列概念的重要術語。
連結 − 連結串列的每個連結都可以儲存稱為元素的資料。
下一個 − 連結串列的每個連結都包含一個指向下一個連結的連結,稱為 Next。
前一個 − 連結串列的每個連結都包含一個指向前一個連結的連結,稱為 Prev。
連結串列 − 連結串列包含一個指向第一個連結的連線連結,稱為 First,以及一個指向最後一個連結的連結,稱為 Last。
雙向連結串列表示
- 雙向連結串列包含一個稱為 first 和 last 的連結元素。
- 每個連結都包含一個或多個數據欄位和兩個連結欄位,稱為 next 和 prev。
- 每個連結都使用其 next 連結與其下一個連結連結。
- 每個連結都使用其 previous 連結與其前一個連結連結。
- 最後一個連結帶有 null 連結以標記列表的結尾。
示例
class Node{
int data;
Node preNode, nextNode, CurrentNode;
Node() {
preNode = null;
nextNode = null;
}
Node(int data) {
this.data = data;
}
}
public class DoublyLinked {
Node head, tail;
int size;
public void printData() {
System.out.println(" ");
Node node = head;
while(node !=null) {
System.out.println(node.data);
node = node.nextNode;
}
System.out.println( );
}
public void insertStart(int data) {
Node node = new Node();
node.data = data;
node.nextNode = head;
node.preNode = null;
if(head!=null) {
head.preNode = node;
}
head = node;
if(tail == null) {
tail = node;
}
size++;
}
public void insertEnd(int data) {
Node node = new Node();
node.data = data;
node.nextNode = null;
node.preNode = tail;
if(tail!=null) {
tail.preNode = node;
}
tail = node;
if(head == null) {
head = node;
}
size++;
}
public static void main(String args[]) {
DoublyLinked dl = new DoublyLinked();
dl.insertStart(10);
dl.insertStart(20);
dl.insertStart(30);
dl.insertStart(1);
dl.insertStart(56);
dl.insertStart(40);
dl.printData();
}
}
輸出
40 56 1 30 20 10
廣告