Salve! Ho implementato questa semplice lista linkata, in cui devo collegare tra loro due o più box tramite l'utilizzo di puntatori, ma la funzione che ho utilizzato nel mio programma, point_at_next() non fa bene il suo compito. Qualcuno può gentilmente suggerirmi dove sbaglio? E' da troppo tempo che ci provo ormai..

Ecco qui il mio codice :
codice:
#include <iostream.h>
using namespace std;
class BOX {
private:
int a;
BOX *next;
public:
BOX(void) { a = 0; next = NULL; }
void set(int n) { a = n; }
void point_at_next(BOX *last, BOX *nuovo_scat) { last->next = nuovo_scat; last = nuovo_scat; }
int leggiDato(void) { return a; }
void stampa(BOX *start);
};
void BOX::stampa(BOX *start)
{
BOX *p;
p = start;
if (p == NULL)
cout << "Lista vuota!\n";
else {
cout << "Gli elementi della lista sono : " << p->a;
p = p->next;
}
}
main()
{
BOX *st = NULL;
BOX *ultimo, *nuovo;
int num = 0;
BOX *box;
int scelta = 0;
BOX();
do {
cout << "--------------------------------------------------------------------------------\n";
cout << " LISTA LINKATA \n";
cout << "--------------------------------------------------------------------------------\n\n";
cout << "Digita '0' per aggiungere un nuovo elemento alla lista; '1' per collegare \n";
cout << "l'ultimo elemento della lista col nuovo; '2' per stampare la lista; '99' per \n";
cout << "uscire dal programma.\n\n";
cout << "Effettua una scelta: ";
cin >> scelta;
switch (scelta) {
case 0 :
cout << "Inserisci il numero da aggiungere alla lista : ";
cin >> num;
box = new BOX;
box->set(num);
break;
case 1 :
box->point_at_next(ultimo, nuovo);
break;
case 2 :
box->stampa(st);
break;
case 99 :
cout << "Uscita dal programma!\n\n";
break;
default :
cout << "Sorry! Bad menu selection!\n\n";
break;
}
} while (scelta != 99);
system("pause");
return 0;
}