Ho praticamente riscritto tutto il programma, perchè effettivamente non aveva molto senso. La funzione stampa(), però, presenta tuttora delle imprecisioni; dopo aver fatto l'apposito debug, come giustamente consigliato da MacApp, gli errori sono di sicuro nelle righe 48 e 51. Visualizzo in output dei numeri a caso, anzichè i numeri da me inseriti..
Questo è il codice ora:
codice:
#include <iostream.h>
class BOX {
public:
int a; // Numero inserito dall'utente nella lista
BOX *next; // Puntatore al prossimo elemento
BOX *start;
BOX *last;
BOX(void) { int a = 0; next = NULL; start = NULL; last = NULL; } // Costruttore
void setDato(int);
void stampa(void);
~BOX(void);
};
void BOX::setDato(int a)
{
BOX *temp;
if (start == NULL) {
temp = new BOX;
start = temp;
last = temp;
} else {
temp = new BOX;
last->next = temp;
last = temp;
}
}
void BOX::stampa(void)
{
BOX *temp = start;
if (temp == NULL)
cout << "La lista e' vuota!\n\n";
else {
cout << "Gli elementi della lista sono : \n";
while (temp->next != NULL) {
cout << temp << "\n";
temp = temp->next;
cout << temp->a << "\n";
}
}
}
BOX::~BOX(void)
{
cout << "BOX destructor speaking : \n\n";
start = NULL;
last = NULL;
if (start != NULL && next != NULL)
cerr << "Error: Trying to destroy a non-empty BOX!\n\n";
}
main()
{
int n = 0;
BOX box;
int choice = 0;
BOX();
do {
cout << "--------------------------------------------------------------------------\n";
cout << " LISTA LINKATA \n";
cout << "--------------------------------------------------------------------------\n\n";
cout << "Digita : 1) per inserire un elemento nella lista;\n";
cout << "2) Stampare la lista;\n";
cout << "0) Uscire dal programma.\n\n";
cout << "Effettua una scelta: ";
cin >> choice;
switch (choice) {
case 1 :
cout << "Inserisci un numero da aggiungere alla lista : ";
cin >> n;
cout << "\n\n";
box.setDato(n);
break;
case 2 :
box.stampa();
break;
case 0 :
cout << "Exiting program!\n\n";
break;
default :
cout << "Sorry! Bad menu selection!\n\n";
break;
}
} while (choice != 0);
return 0;
}