//我来理解一下运用递归求解
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下一个元素 所以需要采用这种方法
}
};