双指针版本:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
typedef struct ListNode* ListNode;
ListNode cur = head;
ListNode pre = NULL;
while(cur){
ListNode tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
递归:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverse(struct reverseList* pre,struct ListNode *cur){
if(!cur){
return pre;
}
struct ListNode* tmp = cur->next;
cur->next = pre;
return reverse(cur,tmp);
}
struct ListNode* reverseList(struct ListNode* head){
return reverse(NULL,head);
}