quindi tu intendi una cosa di questo tipo
codice:
lista FirstLast(lista l){
     if(l==NULL)return NULL; //se è vuota non faccio nulla
     if(l->next==NULL)return l;  //se ha 1 elemento ho finito
     else {
           lista temp=l; //salvo il primo elemento
           l=l->next; //sposto il puntatore al successivo   
          //....richiamo la funzione
     }
}
ma poi come faccio a concatenare alla fine il primo elemento?