递归解法,利用递归找到最后的结点,并且用ret记录,最后返回它。
当递归执行到返回最后一个结点后,此时pHead结点是倒数第二个结点,由于在递归前并没有改变此链表的结构,此时倒数第二个结点依旧指向最后一个结点,改变它的指向,让最后一个结点指向它。
翻转后两个结点结束后,倒数第三个结点依旧保留着和倒数第二个结点的指向关系,还是之前的步骤。
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if (pHead == NULL || pHead->next == NULL) {
return pHead;
}
ListNode *ret = ReverseList(pHead->next);
pHead->next->next = pHead;
pHead->next = NULL;
return ret;
}
};
京公网安备 11010502036488号