java 双向链表反转
时间: 2023-06-28 08:08:06 浏览: 95
JAVA双向链表反转实现
以下是 Java 中使用双向链表实现反转的示例代码:
```java
public class DoublyLinkedList {
Node head;
class Node {
int data;
Node prev;
Node next;
Node(int d) {
data = d;
}
}
// 反转双向链表
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;
}
}
// 插入新节点
void push(int new_data) {
Node new_node = new Node(new_data);
new_node.prev = null;
new_node.next = head;
if (head != null) {
head.prev = new_node;
}
head = new_node;
}
// 打印链表
void printList(Node node) {
while (node != null) {
System.out.print(node.data + " ");
node = node.next;
}
}
public static void main(String[] args) {
DoublyLinkedList dll = new DoublyLinkedList();
dll.push(2);
dll.push(4);
dll.push(8);
dll.push(10);
System.out.println("Original linked list:");
dll.printList(dll.head);
dll.reverse();
System.out.println("\nReversed linked list:");
dll.printList(dll.head);
}
}
```
以上代码中,我们定义了一个双向链表类 `DoublyLinkedList`,其中 `Node` 是链表节点类。我们使用 `reverse()` 方法来反转双向链表,使用 `push()` 方法来插入新节点,使用 `printList()` 方法来打印链表中的节点。在 `main()` 方法中,我们首先创建一个 `DoublyLinkedList` 对象,然后插入了一些节点。接下来,我们打印链表,并调用 `reverse()` 方法来反转链表,最后再次打印链表。
阅读全文