Raga vi mostro questo codice che ho scritto in C++:
codice:
//header file
#ifndef LISTE_H
#define LISTE_H
#include <iostream>
using namespace std;
class Liste {
public:
void crealista();
void stampalista(struct numeri);
private:
struct numeri
{
int x;
numeri* nodo;
};
};
#endif // LISTE_H
codice:
//source file
#include "Liste.h"
#include <iostream>
using namespace std;
void Liste::crealista()
{
int y;
numeri* q=NULL;
q=new numeri;
q->nodo=NULL;
cout << "Premi 1 per inserire un numero, altrimenti premi 0 " << endl;
cin >> y;
cout << endl;
while(y==1)
{
q->nodo=NULL;
int m;
cout << "Inserisci il numero da salvare " << endl;
cin >> m; cout << endl;
numeri* p2=NULL;
p2=new numeri;
p2->x=m;
p2->nodo=q;
q=p2;
cout << "Premi 1 per inserire un numero, altrimenti premi 0 " << endl;
cin >> y;
cout << endl;
}
numeri* m=q;
stampalista(m);
}
void Liste::stampalista(numeri m )
{
while(m!=NULL)
{
cout << m->x << endl;
m=m->nodo;
}
}
La funzione stampa lista mi dà sempre errore in quanto non riesco a passargli bene la struct m. Qual'è il codice corretto per passare bene la lista? Inoltre, come si fà a passare la lista per valore (in modo che crei una copia invece di modificarmi il valore della lista originale) e per riferimento (in modo da, per esempio, una volta che ho creato la lista posso passarla per mettere in coda per esempio)?
Grazie in anticipo