递归思路解决单链表反转笔记



Java版本:

class Solution {
    public ListNode reverseList (ListNode head) {
        if (head == null || head.next == null) {//终止条件是当前为空,或下一个节点为空
            return head;
        }
        ListNode every_tmp_head = reverseList(head.next);//最后一个节点,每次临时head节点
        head.next.next = head;//如图所示
        head.next = null;//防止链表在每个当前节点产生循环,将原方向设置为空
        return every_tmp_head;//每层递归都返回最后一个节点
    }
}