Java 資料結構 - 環形連結串列
環形連結串列是連結串列的一種變體,其中第一個元素指向最後一個元素,最後一個元素指向第一個元素。單鏈表和雙向連結串列都可以轉換成環形連結串列。
單鏈表作為環形連結串列
在單鏈表中,最後一個節點的 next 指標指向第一個節點。
雙向連結串列作為環形連結串列
在雙向連結串列中,最後一個節點的 next 指標指向第一個節點,第一個節點的 previous 指標指向最後一個節點,從而形成雙向環形連結串列。
根據以上說明,以下是一些需要考慮的重要事項。
在單鏈表和雙向連結串列兩種情況下,最後一個連結的 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
廣告