MAIN:
codice:
int main(int argc, char *argv[])
{
    system("color F2");
    stringa nome, cognome;
    int i = 0, k = 0;
    
    cout << "\t\t - LISTA 1 - \n\n";
    pNodo lista = creaLista(); pNodo lista2 = creaLista(); pNodo lista3 = creaLista();
    while(i < 3){
            cout << "\t Inserisci nome: ";
            cin >> nome;
            cout << "\t Inserisci cognome: ";
            cin >> cognome;
            push(lista, nome, cognome);
            i++;
            }
    cout << "\t\t - LISTA 2 - \n\n";
    while(k < 4){
            cout << "\t Inserisci nome: ";
            cin >> nome;
            cout << "\t Inserisci cognome: ";
            cin >> cognome;
            push(lista2, nome, cognome);
            k++;
            }
    sortLista(lista); sortLista(lista2);
    mergeSort(lista, lista2, lista3);
    stampaLista(lista3);
    cout << "\t ";
    system("PAUSE");
    return EXIT_SUCCESS;
}
sortLista ordina gli elementi in base al cognome.

MERGESORT:
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);
                 }
     while(lista){
                  push(lista3, lista->nome, lista->cognome);
                  }
     while(lista2){
                   push(lista3, lista2->nome, lista2->cognome);
                   }
}
Per il "problema" ho detto che quando arriva ad eseguire il mergeSort compare una scritta che non riesco a leggere perchè subito si chiude, ma non crasha