用Java写一个Java反转双向链表
时间: 2023-08-29 14:06:00 浏览: 107
下面是Java实现反转双向链表的代码:
```java
public class DoublyLinkedList {
private Node head;
private class Node {
int data;
Node prev;
Node next;
public Node(int data) {
this.data = data;
}
}
// 添加元素到双向链表的尾部
public void add(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
newNode.prev = current;
}
}
// 反转双向链表
public void reverse() {
Node current = head;
Node temp = null;
while (current != null) {
temp = current.prev;
current.prev = current.next;
current.next = temp;
current = current.prev;
}
if (temp != null) {
head = temp.prev;
}
}
// 输出双向链表
public void print() {
Node current = head;
while (current != null) {
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
}
public static void main(String[] args) {
DoublyLinkedList list = new DoublyLinkedList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.print("Original List: ");
list.print();
list.reverse();
System.out.print("Reversed List: ");
list.print();
}
}
```
在这个实现中,我们定义了一个内部类 `Node` 来表示双向链表节点。在 `add` 方法中,我们添加一个新节点到链表尾部。在 `reverse` 方法中,我们使用三个指针 `current`, `temp`, 和 `prev` 来反转链表。在 `print` 方法中,我们遍历链表并打印每个节点的值。
在 `main` 方法中,我们创建一个新的 `DoublyLinkedList` 对象,并添加一些元素。然后,我们打印原始链表,调用 `reverse` 方法反转链表,并再次打印反转后的链表。
阅读全文