O.O Mi sono scordato proprio! Adesso modifico subito:

codice:
void mergeSort(pNodo lista, pNodo lista2, pNodo &lista3)
{
     while(lista && lista2){
                 if(strcmp(lista->cognome, lista2->cognome) > 0) push(lista3, lista->nome, lista->cognome);
                 else push(lista3, lista2->nome, lista2->cognome);
                 lista = lista->next; lista2 = lista2->next;
                 }
     while(lista){
                  push(lista3, lista->nome, lista->cognome);
                  lista = lista->next;
                  }
     while(lista2){
                   push(lista3, lista2->nome, lista2->cognome);
                   lista2 = lista2->next;
                   }
}
la lista3 non viene riempita di tutti i nomi ma solo di alcuni...