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