1 题目分析
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
2 代码实现
思路:递归法,在回溯时修改链表指向
class Solution {
public:
ListNode* reverseList(ListNode* head) {
return Recur(head, NULL);
}
ListNode* Recur(ListNode* cur, ListNode* pre)
{
if (cur == NULL) return pre;
ListNode* res = Recur(cur->next,cur);
cur->next = pre;
return res;
}
};
3 递归算法整理
1、退出条件:递归函数中,确定退出条件
if (cur == NULL) return pre;
2、递归语句
ListNode* res = Recur(cur->next,cur);
return res;
3、回溯操作(在回溯时修改指针指向)
cur->next = pre