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;
}