Ciao!!! Devo scrivere una procedura che inverta gli elementi di una lista. Cioè se l'input è 1,2,3,4 l'output sarà 4,3,2,1. Questa qui non funziona...Qualche suggerimento?? Grazie

codice:
void ribalta(Pnodo &TL1,Pnodo TL,Pnodo L)//TL1,TL ed L inizialmente sono tutti la testa lista
{
    
    Pnodo tmp1,tmp2;
    
     if(TL1==TL)
     {
         while(L->next!=NULL)
            L=L->next;
         
         tmp1=L;
         tmp2=TL;
         TL1=tmp1;
         L=NULL;
         TL1->next=tmp2;
         return ribalta(TL1,TL,TL1);
                 
     }
     
     else if(TL->next!=NULL)
     {
          while(L->next!=NULL)
             L=L->next; 
          tmp1=L;
          tmp2=TL;
          L=NULL;
          TL=tmp1;
          TL->next=tmp2;
          return ribalta(TL1,TL->next,TL->next);
     }

}