diego86
29-02-2008, 13:22
Ho un problema con le funzioni di inserimento in una lista ordinata.
Devo inserire in una lista di assex vuota, una lista di asse y vuota alla quale assegnerò una biglia. Il problema è che il tutto funziona, assegno la biglia, ma poi tornando alla funzione chiamante, il puntatore alla nuova struttura rimane NULL.
void inseriscix(struct assex *pl, int x, int y, struct biglia *b)
{ if(pl==NULL) {
pl=malloc(sizeof(struct assex));
(*pl).x=x;
(*pl).nextx=NULL;
(*pl).nexty=NULL;
inserisciy((*pl).nexty,x,y,b);
return;
}
}
void inserisciy(struct assey *pl, int e, int z, struct biglia *b)
{ if(pl==NULL) {
pl=malloc(sizeof(struct assey));
(*pl).x=e;
(*pl).y=z;
(*pl).nexty=NULL;
(*pl).b=b;
return;
}
}
Quindi inseriscix richiama inserisciy che assegna correttamente la biglia (ho verificato con il debug), ma quando ritorna il comando a inseriscix, mi da che (*pl).nexty = NULL invece che puntare all'indirizzo della nuova struttura creata dalla funzione inserisciy.
Lo stesso problema lo riscontro nel ritorno da inseriscix al main.
dov'è l'errore? grazie..
Devo inserire in una lista di assex vuota, una lista di asse y vuota alla quale assegnerò una biglia. Il problema è che il tutto funziona, assegno la biglia, ma poi tornando alla funzione chiamante, il puntatore alla nuova struttura rimane NULL.
void inseriscix(struct assex *pl, int x, int y, struct biglia *b)
{ if(pl==NULL) {
pl=malloc(sizeof(struct assex));
(*pl).x=x;
(*pl).nextx=NULL;
(*pl).nexty=NULL;
inserisciy((*pl).nexty,x,y,b);
return;
}
}
void inserisciy(struct assey *pl, int e, int z, struct biglia *b)
{ if(pl==NULL) {
pl=malloc(sizeof(struct assey));
(*pl).x=e;
(*pl).y=z;
(*pl).nexty=NULL;
(*pl).b=b;
return;
}
}
Quindi inseriscix richiama inserisciy che assegna correttamente la biglia (ho verificato con il debug), ma quando ritorna il comando a inseriscix, mi da che (*pl).nexty = NULL invece che puntare all'indirizzo della nuova struttura creata dalla funzione inserisciy.
Lo stesso problema lo riscontro nel ritorno da inseriscix al main.
dov'è l'errore? grazie..