leetcode题目连接:https://leetcode.cn/problems/reverse-linked-list/

 题解过程:
 
1.找到重复的子问题
 
 要逆序第一个节点,就把后面的节点都逆序一遍  
2.关注到具体的子问题的实现
 
 第一步:将当前节点的后面所有节点逆置  
 第二步:返回逆置后的头节点  
 具体如何实现逆置?  
 1.当前节点的下一个节点的next指向自己  
 2.将当前节点的next置空  
3.递归的出口
 
head == nullptr || head->next == nullptr
代码:
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        //1.递归的出口
        if (head == nullptr || head->next == nullptr)
            return head;
        
        //2.关心具体的一个子问题做的事情
        //2.1 让后面的逆置,并返回逆置后的头节点
        ListNode* newHead = reverseList(head->next);
        //2.2实现具体的逻辑,让自己的下一个节点的next指向自己
        head->next->next = head;
        //2.3断开连接
        head->next = nullptr;
        return newHead;
    }
};




















