Avendo due liste L1 ed L2(ordinata), devo scrivere una procedura che sposti tutti gli elementi di L1 in L2 in modo che alla fine L2 risulti ancora ordinata. Qualche idea?? Grazie mille...

Ho scritto questa ma non funziona... Se conoscete un altro metodo potete anche postare tutto senza correggere questa...

codice:
void ordina(Pnodo L1,Pnodo & TL2,Pnodo L2)
{Pnodo tmp;
     if(L1!=NULL)
     {
        if(L2->next==NULL)
        {
            L2->next=L1;
            L2->next->next=NULL;
            L1=L1->next;
            return ordina(L1,TL2,TL2);              
        }    
             
        else if((L1->info>L2->info)&&(L1->info<L2->next->info))
        {
        
           tmp=L2->next;
           L2->next=L1;
           L2->next->next=tmp;                                               
           L1=L1->next;
           return ordina(L1,TL2,TL2);
        }
        else
        return ordina(L1,TL2,L2->next);

     }
}