Java 实现双链表反转

一、流程概述

为了实现双链表的反转,我们可以按照以下步骤进行操作:

步骤 操作
1 初始化三个指针,分别指向当前节点、前一个节点和后一个节点
2 遍历双链表,将当前节点的 next 指针指向前一个节点,然后更新前一个节点和当前节点
3 最后更新头节点的 next 指针为 null,将新链表的头节点指向原链表的尾节点

二、具体操作步骤

1. 定义双链表节点类

首先定义一个双链表节点类,包含节点值、前一个节点指针、后一个节点指针:

class ListNode {
    int val;
    ListNode prev;
    ListNode next;

    public ListNode(int val) {
        this.val = val;
    }
}

2. 实现双链表反转方法

接下来编写一个方法来实现双链表的反转操作:

public ListNode reverseLinkedList(ListNode head) {
    ListNode prev = null;
    ListNode current = head;
    ListNode next = null;

    while (current != null) {
        next = current.next; // 保存当前节点的后一个节点
        current.next = prev; // 将当前节点的 next 指针指向前一个节点
        current.prev = next; // 更新当前节点的 prev 指针
        prev = current; // 更新前一个节点指针
        current = next; // 更新当前节点指针
    }

    return prev; // 返回新的头节点
}

3. 使用方法对双链表进行反转

最后,我们可以使用上面编写的方法来对双链表进行反转:

ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.prev = head;

ListNode newHead = reverseLinkedList(head);

三、类图

classDiagram
    class ListNode {
        int val
        ListNode prev
        ListNode next
        ListNode()
    }

通过以上步骤,我们可以成功实现双链表的反转操作,希望以上内容能帮助你理解和掌握这一技术。祝你学习愉快,编程顺利!