在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; // 返回反转后的链表头节点
}
这两种方法都可以实现链表的反转操作,你可以根据自己的需求和喜好选择合适的方法。