在Java中,可以使用迭代或遞歸的方法來實現鏈表的反轉操作。這里分別給出兩種方法的實現:
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode current = head;
ListNode next = null;
while (current != null) {
next = current.next; // 保存當前節點的下一個節點
current.next = prev; // 將當前節點的下一個節點指向前一個節點
prev = current; // 更新前一個節點為當前節點
current = next; // 更新當前節點為下一個節點
}
return prev; // 當current為null時,prev即為反轉后的鏈表頭節點
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = reverseList(head.next); // 遞歸反轉從head的下一個節點開始的鏈表
head.next.next = head; // 將原鏈表的第二個節點指向第一個節點
head.next = null; // 將原鏈表的第一個節點的下一個節點置為null
return newHead; // 返回反轉后的鏈表頭節點
}
這兩種方法都可以實現鏈表的反轉操作,你可以根據自己的需求和喜好選擇合適的方法。