LeetCode206链表反转

发布时间:2024年01月05日

//我来理解一下运用递归求解
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        //首先判断是否为最后一个元素
        if(head == null|| head.next == null)
        {
            return    head;//返回末尾元素
        }
        ListNode* receive;
        //此时进入循环的每一层都实现了temp接收head.next的结点进行保存;
        //所以head同时可以作为新的反转列表后的新的结点元素
        receive = reverseList(head->next);
//第一次返回5 receive = 5跳出第5层递归,此时在第四层循环此时head->next = 5,head.next.next = 4,4的下一个值置空,返回4;
//第二次在第3层的时候,head->next = 4;head = 3,让3.next置空,返回3;依次类推,
//第三次先到达head.next = null,head返回3,head.next 此时为上一个;
        head.next.next = head;
        head.next = null;//使得下一个结点返回
//这里面需要注意是:递归输入的是head-》next下一个元素 所以需要采用这种方法
        
    }
};

文章来源:https://blog.csdn.net/2201_76063234/article/details/135417817
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。