node * recReverse(node *prev,node *cur) { node *temp,*temp1; if(cur->next==NULL) return cur; temp1=recReverse(prev,cur->next); cur->next->next=cur; cur->next=NULL; return temp1; }
struct ListNode* recReverse( struct ListNode* head, struct ListNode** pTail ) { if ( !head ) { return NULL; } else { struct ListNode* cur = recReverse( head->next, pTail ); if ( !cur ) { *pTail = head; return head; } else { head->next = NULL; (*pTail)->next = head; *pTail = head; return cur; } return head; } }
struct ListNode* reverseList( struct ListNode* head ) { struct ListNode** pTail; pTail = &head; return recReverse( head, pTail ); }