如何在java中实现双向链表

avatar
作者
猴君
阅读量:0

在Java中实现双向链表,首先需要创建一个表示链表节点的类,然后创建一个双向链表类来管理这些节点

  1. 创建表示链表节点的类(Node):
public class Node<T> {     T data; // 节点存储的数据     Node<T> prev; // 指向前一个节点的引用     Node<T> next; // 指向下一个节点的引用      public Node(T data) {         this.data = data;         this.prev = null;         this.next = null;     } } 
  1. 创建双向链表类(DoublyLinkedList):
public class DoublyLinkedList<T> {     private Node<T> head; // 链表头节点     private Node<T> tail; // 链表尾节点      public DoublyLinkedList() {         head = null;         tail = null;     }      // 在链表头部添加节点     public void addFirst(T data) {         Node<T> newNode = new Node<>(data);         if (head == null) {             head = newNode;             tail = newNode;         } else {             newNode.next = head;             head.prev = newNode;             head = newNode;         }     }      // 在链表尾部添加节点     public void addLast(T data) {         Node<T> newNode = new Node<>(data);         if (tail == null) {             head = newNode;             tail = newNode;         } else {             newNode.prev = tail;             tail.next = newNode;             tail = newNode;         }     }      // 删除链表头部的节点     public void removeFirst() {         if (head == null) {             System.out.println("链表为空,无法删除元素");             return;         }         if (head == tail) {             head = null;             tail = null;         } else {             head = head.next;             head.prev = null;         }     }      // 删除链表尾部的节点     public void removeLast() {         if (tail == null) {             System.out.println("链表为空,无法删除元素");             return;         }         if (head == tail) {             head = null;             tail = null;         } else {             tail = tail.prev;             tail.next = null;         }     }      // 遍历并打印链表中的所有元素     public void printList() {         Node<T> currentNode = head;         while (currentNode != null) {             System.out.print(currentNode.data + " ");             currentNode = currentNode.next;         }         System.out.println();     } } 
  1. 使用示例:
public class Main {     public static void main(String[] args) {         DoublyLinkedList<Integer> list = new DoublyLinkedList<>();         list.addFirst(1);         list.addFirst(2);         list.addLast(3);         list.addFirst(4);         list.printList(); // 输出: 4 2 1 3          list.removeFirst();         list.removeLast();         list.printList(); // 输出: 2 1     } } 

这个例子展示了如何实现一个简单的双向链表。你可以根据需要扩展这个实现,例如添加更多的方法来操作链表,如插入、删除指定位置的节点等。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!