• Java 資料結構教程

Java 資料結構 - 環形連結串列



環形連結串列是連結串列的一種變體,其中第一個元素指向最後一個元素,最後一個元素指向第一個元素。單鏈表和雙向連結串列都可以轉換成環形連結串列。

單鏈表作為環形連結串列

在單鏈表中,最後一個節點的 next 指標指向第一個節點。

Singly Linked List Circular

雙向連結串列作為環形連結串列

在雙向連結串列中,最後一個節點的 next 指標指向第一個節點,第一個節點的 previous 指標指向最後一個節點,從而形成雙向環形連結串列。

Doubly Linked List Circular

根據以上說明,以下是一些需要考慮的重要事項。

在單鏈表和雙向連結串列兩種情況下,最後一個連結的 next 指標都指向列表的第一個連結。

對於雙向連結串列,第一個連結的 previous 指標指向列表的最後一個連結。

示例

class Node{	
   int data;
   Node preNode, nextNode, CurrentNode;
   Node() {
      preNode = null;
      nextNode = null; 
   }	   
   Node(int data) {
      this.data = data;
   }		
}
public class CircularLinked {
   Node head, tail;
   int size;
	   
   public void printData() {
      Node node = head;
      if(size<=0) {
         System.out.print("List is empty");
      } else {
         do {
            System.out.print(" " + node.data);
            node = node.nextNode;
         }
         while(node!=head);
      }
   }
   public void insertStart(int data) {
      Node node = new Node();
      node.data = data;
      node.nextNode = head;
      node.preNode = null;
      
      if(size==0) {
         head = node;
         tail = node;
         node.nextNode = head;
      } else {
         Node tempNode = head;
         node.nextNode = tempNode;
         head = node;
         tail.nextNode = node;
      }
      size++;   
   }
   public void insertEnd(int data) {
      if(size==0) {
         insertStart(data);
      } else {
         Node node = new Node();
         tail.nextNode =node;
         tail = node; 
         tail.nextNode = head;
         size++;   
      }
   }
	public static void main(String args[]) {
      CircularLinked dl = new CircularLinked();
      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.