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