C'è qualche inesattezza che vedremo in laboratorio..
Il modo migliore per provare l'esattezza dell'esercizio è quello di isolare il codice che non ti è chiaro.
Provare a fare la stampa di ogni singola riga di codice e vedere come si comporta il programma
ad esempio
cout<<" \n inserisci nome della classe ";
cin>>p1->nome;
QUI FAI UNA STAMPA cout<<p1->nome; per vedere se ci sono anomalie
cout<<" \n inserisci numero della classe ";
cin>>p1->numero;
QUI FAI UNA STAMPA cout<<p1->numero; per vedere se ci sono anomalie di inserimento
cout<<" \n inserisci nome dell'altra classe ";
cin>>p2->nome;
QUI FAI UNA STAMPA cout<<p2->nome; per vedere se ci sono anomalie
cout<<" \n inserisci numero dell'altra classe ";
cin>>p2->numero;
FAI la STAMPA cout<<p2->numero; per vedere se ci sono anomalie
anche qui controlla il codice per vedere se i dati inseriti sono corretti
quando assegni i puntatori p1=p2; devi controllare
cout<<p1->numero ;
cout<<p1-> nome;
se sono stati inseriti gli ultimi elementi
while (p1->prossimo != NULL)
{
cout<<" \n nome classe "<<p1->nome;
cout<<" \n numero classe "<<p1->numero;
p1=p1->prossimo;
}