单向链表反转java
时间: 2024-09-09 15:04:31 浏览: 53
Java实现单向链表反转
单向链表反转是指将一个单链表从头到尾的节点顺序改变,使得原来的下一个节点变成当前节点的前一个节点。在Java中,我们可以使用迭代或递归的方式来实现这个操作。
**迭代法:**
```java
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode temp = curr.next; // 保存当前节点的下一个节点
curr.next = prev; // 将当前节点指向prev
prev = curr; // 更新prev为当前节点
curr = temp; // 移动到下一个节点
}
return prev; // 返回新的头节点,即原尾部节点
}
```
**递归法:**
```java
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = reverseList(head.next); // 递归反转剩余部分
head.next.next = head; // 将当前节点的next指向前一个节点
head.next = null; // 更新当前节点的next为null
return newHead; // 返回新头节点
}
```
阅读全文