一.题目描述
输入一个链表,反转链表后,输出新链表的表头。
二.代码(C++)
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
private:
ListNode* end;
void reverse(ListNode* p1,ListNode* p2)
{
if(p2->next == NULL)
{
end = p2;
p2->next = p1;
}
else
{
reverse(p2, p2->next);
p2->next = p1;
}
}
public:
ListNode* ReverseList(ListNode* pHead) {
if(!pHead || !pHead->next)
return pHead;
reverse(pHead, pHead->next);
pHead ->next = NULL;
return end;
}
};
三.提交记录
四.备注
这里使用递归,从后往前反转链表。
也可以用三个指针,从前往后反转链表。