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