Sto iniziando a studiare le liste e ho creato questo programma per la creazione di una lista, ma ho dei dubbi, come fa "p" ad essere modificato nonostante io non lo ritorni o non lo metta uguale a nulla?
#include <iostream>
#include <string>
using namespace std;
struct nodo{
nodo *indirizzo;
int info;
};
struct nodo *crea_lista(int n,struct nodo *p);
void visualizza(struct nodo *);
int main()
{
struct nodo *p;
int n;
do{
cout<<"Quanti elementi contiene la lista?"<<"\t";
cin>>n;
}while(n < 0);
if (n==0) p=NULL;
else{
p = new nodo;
cout<<"Inserire il primo valore : "<<"\t";
cin>>p->info;
p->indirizzo=NULL;
crea_lista(n,p);
}
visualizza(p);
system("pause");
return 0;
}
struct nodo *crea_lista(int n,struct nodo *p){
struct nodo *puntatore;
[color=#FF0000]puntatore=p;[/color]
for(int i=0;i<n-1;i++){
puntatore->indirizzo= new nodo;
puntatore=puntatore->indirizzo;
cout<<"Inserire l' elemento : "<<"\t";
cin>>puntatore->info;
}
puntatore->indirizzo=NULL;
}
void visualizza(struct nodo *p){
while( p != NULL){
cout<<" "<<p->info<<"->"<<endl;
p=p->indirizzo;
system("PAUSE");
}
}
Mi hanno detto che p si modifica attraverso puntatore=p, ma com'è possibile? Io credevo servisse solo per dare a puntatore il primo valore di P. Qualcuno potrebbe spiegarmi?