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