• Java 資料結構教程

Java 資料結構 - 雙向連結串列



雙向連結串列是連結串列的一種變體,與單向連結串列相比,它可以輕鬆地向前和向後導航。以下是一些瞭解雙向連結串列概念的重要術語。

連結 − 連結串列的每個連結都可以儲存稱為元素的資料。

下一個 − 連結串列的每個連結都包含一個指向下一個連結的連結,稱為 Next。

前一個 − 連結串列的每個連結都包含一個指向前一個連結的連結,稱為 Prev。

連結串列 − 連結串列包含一個指向第一個連結的連線連結,稱為 First,以及一個指向最後一個連結的連結,稱為 Last。

雙向連結串列表示

Doubly Linked List
  • 雙向連結串列包含一個稱為 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
廣告

© . All rights reserved.