1. 双指针写法
class Solution{
public:
ListNode* reverseList(ListNode* head)
{
ListNode* tmp;
ListNode* cur = head;
ListNode* pre =NULL;
while(cur)
{
temp = cur->next;
cur->next = pre;
pre = cur;
cur = temp;
}
return pre;
}
};
2.递归法
class Solution{
public:
ListNode* reverse(ListNode* pre, ListNode* cur)
{
if(cur == NULL) return pre;
ListNode* tmp = cur->next;
cur->next = pre;
return reverse(cur,tmp);
}
ListNode* reverseList(ListNode* head)
{
return reverse(NULL, head);
}
};