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
广告