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;
}	
Exemple #2
0
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;
   }
}
Exemple #3
0
struct ListNode* reverseList( struct ListNode* head )
{
   struct ListNode** pTail;
   pTail = &head;
   return recReverse( head, pTail );
}