leadergl
31-01-2006, 08:06
raga ho una funzione che crea un albero, in quest'albero c'è anche una lista da riempire.
l'albero viene creato bene e quando chiamo la funzione per creare la lista nessun problema ma poi evidentemente qualcosa nn funziona, ma nn so xkè?
void GeneraAlbero(FILE *stream, AlberoTassonomia **nodo, int fratelli)
{
char prop[256];
// ....
// ....
// Inserisco la lista delle proprietà
RiempiListaProprieta((*nodo)->proprieta, prop);
Ecco il codice che genera la lista delle proprietà:
// Riempie la lista delle proprietà di ogni nodo
void RiempiListaProprieta(ListaProprieta *list, char *proprieta)
{
int loop;
char *array[256];
if (list==NULL) NuovaLista(list);
array[0]=strtok(proprieta,"|");
if(array[0]==NULL)
{
exit(0);
}
for(loop=1;loop<256;loop++)
{
// isolo la proprieta e la memorizzo in ARRAY[LOOP]
array[loop]=strtok(NULL,"|");
if(array[loop]==NULL)
break;
// inserisco il valore della varie proprietà
PushLista(list, array[loop]);
}
printf("\n");
}
Ed ecco la mia funzione NuovaLista e PushLista:
// Crea una nuova lista
void NuovaLista(ListaProprieta *list)
{
if (list!=NULL) list=NULL;
list=(ListaProprieta *)malloc(sizeof(ListaProprieta));
}
// Inserisce l'elemento X in cima alla lista
void PushLista(ListaProprieta *list, char *x)
{
int i;
ListaProprieta *nuovo=(ListaProprieta *)malloc(sizeof(ListaProprieta));
nuovo->elem=x;
nuovo->next=list;
}
cosa c'è che non va?
l'albero viene creato bene e quando chiamo la funzione per creare la lista nessun problema ma poi evidentemente qualcosa nn funziona, ma nn so xkè?
void GeneraAlbero(FILE *stream, AlberoTassonomia **nodo, int fratelli)
{
char prop[256];
// ....
// ....
// Inserisco la lista delle proprietà
RiempiListaProprieta((*nodo)->proprieta, prop);
Ecco il codice che genera la lista delle proprietà:
// Riempie la lista delle proprietà di ogni nodo
void RiempiListaProprieta(ListaProprieta *list, char *proprieta)
{
int loop;
char *array[256];
if (list==NULL) NuovaLista(list);
array[0]=strtok(proprieta,"|");
if(array[0]==NULL)
{
exit(0);
}
for(loop=1;loop<256;loop++)
{
// isolo la proprieta e la memorizzo in ARRAY[LOOP]
array[loop]=strtok(NULL,"|");
if(array[loop]==NULL)
break;
// inserisco il valore della varie proprietà
PushLista(list, array[loop]);
}
printf("\n");
}
Ed ecco la mia funzione NuovaLista e PushLista:
// Crea una nuova lista
void NuovaLista(ListaProprieta *list)
{
if (list!=NULL) list=NULL;
list=(ListaProprieta *)malloc(sizeof(ListaProprieta));
}
// Inserisce l'elemento X in cima alla lista
void PushLista(ListaProprieta *list, char *x)
{
int i;
ListaProprieta *nuovo=(ListaProprieta *)malloc(sizeof(ListaProprieta));
nuovo->elem=x;
nuovo->next=list;
}
cosa c'è che non va?