codice:
/* Definiamo una struct di tipo persona con un campo nome 
              e un puntatore alla struct stessa  */
struct persona{
       string nome;
       persona* succ;
};

typedef persona* pointer;    //Defiamo un tipo puntatore a persona

Coda::Coda(const Coda& c) {
       pointer q = l.coda;   //Creiamo un puntatore d'appoggio
       if (q!=0){        //Testiamo se la lista da copiare è vuota   
             coda = new persona;   //Allochiamo una nuova struct
             coda->nome=q->nome;   //Copiamo i campi
             testa=coda;       //Inizializziamo il puntatore di testa
             q=q->succ;  //Avanziamo col punt. nella coda da copiare
             while(q!=0){  //Cicliamo fino a che non termina la coda
                         testa->succ = new persona; //Accodiamo nuove struct
                         testa = testa->succ;
                         testa->nome = q->nome;
                         q=q->succ;
             }
             testa->succ=0; //Poniamo il campo succ dell'ultima struct a zero
       }
       else cout<<"Lista Vuota";

}
Spero così vada bene.

P.S. Sì