/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode *resolve(ListNode *pHead)
{
if (!pHead)
return NULL;
ListNode *pNextNode = resolve(pHead->next);
if (!pNextNode)
{
return pHead;
}
else
{
pNextNode->next = pHead;
pHead->next = NULL;
return pHead;
}
}
ListNode* ReverseList(ListNode* pHead) {
ListNode *ret = pHead;
while (ret && ret->next)
{
ret = ret->next;
}
resolve(pHead);
return ret;
}
};
思路:
首先定位最后一个子节点: 自然是while和递归中的递;