Intanto dovresti mostrare il nuovo codice (magari in un altro thread), visto che è cambiato. Poi dovresti controllare che il campo a cui devi assegnare qualcosa non sia NULL (come intuisco sia).
.. Sì, hai ragione.. Ho cambiato alcuni parti del mio programma dal mio primo messaggio. Effettivamente risulta nullo il valore dei puntatori nel debug, per questo non si visualizza niente, ma purtroppo non so come fare... :master:
Posto qui il mio codice aggiornato :
codice:
#include <iostream>
#include <stdlib.h>
using namespace std;
class Union {
private :
class Lista {
private :
char name;
Lista* nxt;
public :
Lista() { name = '\0'; nxt = NULL; }
~Lista() { name = '\0'; nxt = NULL; }
friend class Union;
};
public :
Lista* nodoA, *nodoB, *nodoC, *nodoD;
Union() {
nodoA = new Lista();
nodoA->name = 'A';
Lista* nodoAfiglio = new Lista();
nodoAfiglio->nxt = nodoA;
nodoAfiglio->name = 'a';
nodoB = new Lista();
nodoB->name = 'B';
Lista* nodoBfiglio = new Lista();
nodoBfiglio->nxt = nodoB;
nodoBfiglio->name = 'b';
nodoC = new Lista();
nodoC->name = 'C';
Lista* nodoCfiglio = new Lista();
nodoCfiglio->nxt = nodoC;
nodoCfiglio->name = 'c';
nodoD = new Lista();
nodoD->name = 'D';
Lista* nodoDfiglio = new Lista();
nodoDfiglio->nxt = nodoD;
nodoDfiglio->name = 'd';
}
~Union() { delete nodoA; delete nodoB; delete nodoC; delete nodoD; }
void show(Lista* l1) {
Lista* ptr = l1;
cout << "Visualizzo la lista cosi' ottenuta : \n\n";
while(ptr != NULL) {
cout << "[ " << ptr->name << " ] ";
ptr = ptr->nxt;
}
cout << "\n\n";
}
void internal_union(Lista* l1, Lista* l2) {
Lista* tmp = l2;
l1->nxt->nxt = l2->nxt;
delete l2;
show(l1);
}
void unione() {
cout << "Fondiamo gli Insiemi 'A' e 'B' : \n\n";
internal_union(nodoA, nodoB);
cout << "Fondiamo gli Insiemi 'A' e 'C' : \n\n";
internal_union(nodoA, nodoC);
cout << "Fondiamo gli Insiemi 'A' e 'D' : \n\n";
internal_union(nodoA, nodoD);
cout << "Fondiamo gli Insiemi 'B' e 'C' : \n\n";
internal_union(nodoB, nodoC);
cout << "Fondiamo gli Insiemi 'B' e 'D' : \n\n";
internal_union(nodoB, nodoD);
cout << "Fondiamo gli Insiemi 'C' e 'D' : \n\n";
internal_union(nodoC, nodoD);
}
};
main() {
Union obj;
cout << "**************** UNION - FIND ****************\n\n";
obj.unione();
cout << "Premi Invio per terminare..";
cin.ignore();
return EXIT_SUCCESS;
}