anche così ottengo lo stesso risultato:

codice:
void lista::copialista(const lista & lista){
L q=lista.l ; //Creiamo un puntatore d'appoggio
L t=lista.l;
       if (q!=0){        //Testiamo se la lista da copiare è vuota
             l = new Record;   //Allochiamo una nuova struct
             l->elem=q->elem;   //Copiamo i campi
             //l->punt=l;
             q=q->punt;  //Avanziamo col punt. nella lista da copiare
             while(q!=0){  //Cicliamo fino a che non termina la lista
                 l->punt = q; //Accodiamo nuove struct

                 l->elem = q->elem;
                 l=l->punt;
                 q=q->punt;
             }
       l->punt=0; //Poniamo il campo punt dell'ultima struct a zero
       }
       else cout<<"Lista Vuota";
}