双向链表逆置Java
时间: 2024-08-08 21:00:34 浏览: 57
双向链表逆置(Reversing a Doubly Linked List)是指将双向链表中的节点顺序反转,使得原本的头结点变为原来的尾结点,而尾结点变为了新的头结点。在Java中,我们可以利用迭代或递归的方式实现这个操作。这里提供一个简单的迭代方法:
```java
public class ListNode {
int val;
ListNode prev;
ListNode next;
// 构造函数
ListNode(int val) {
this.val = val;
this.prev = null;
this.next = null;
}
}
public class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) { // 基线条件:空链表或只有一个元素
return head;
}
ListNode current = head; // 初始化当前指针
ListNode temp = null; // 中间辅助指针
while (current != null) { // 循环直到遍历完整个链表
temp = current.prev; // 将temp设置为当前节点的前一个节点
current.prev = current.next; // 更新当前节点的prev指向前一个节点
current.next = temp; // 更新当前节点的next指向temp
// 移动指针到下一个节点
current = current.prev; // 当前节点变成上一个节点
}
// 如果原头结点不是新的头结点,则交换它们
if (temp != null) {
head = temp.prev;
}
return head;
}
}
```
阅读全文