Reverse a singly linked list.
递归与指针实现代码贴上
#include <cstdlib>
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* reverseList(ListNode* head) {
/*if ((!head) || (!head->next))
return head;
ListNode* ptr = head->next;
ListNode* p = head;
p->next = NULL;
ListNode* cur = NULL;
while (ptr)
{
cur = ptr->next;
ptr->next = p;
p = ptr;
ptr = cur;
}
return p;*/
if ((!head) || (!head->next))
return head;
ListNode* ptr = head->next;
ListNode* p = reverseList(ptr);
head->next = NULL;
ptr->next = head;
return p;
}
};