/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head == NULL) {
return NULL;
}
ListNode *prev=NULL, *cur=head, *n=cur->next;
while(n!=NULL) {
cur->next=prev;
prev=cur;
cur=n;
n=cur->next;
}
cur->next=prev;
head=cur;
return head;
}
};
递归方法:
class Solution {
public:
ListNode* reverseList(ListNode *p, ListNode* head) {
if(p->next==NULL) {
head->next=p;
return head;//找到最后一个节点
}
reverseList(p->next,head);
p->next->next=p;//反转节点
p->next=NULL;//第一个节点反转后其后继应该为NULL
return head;
}
};