算法整体思路
- 通过递归找到链表最后一个节点,这将是反转链表后的头节点
- 反转当前节点和它下一个节点
- 当前节点的下一个节点指向NULL
- 返回保存的未来的头节点
代码如下:
public static Node reverse2(Node head) {
//step1.1
if (head == null || head.next == null) {
return head;
}
//step1.2 保存递归返回值
Node last = reverse2(head.next);
//step2
head.next.next = head;
//step3
head.next = null;
//step4
return last;
}