Salve a tutti,
è la prima volta che scrivo su questo forum quindi se commetto delle irregolarità mi scuso in anticipo.
Volevo sapere come dovrei fare per creare una lista ricorsiva con inserimento in coda. Vi allego il listato perchè non riesco a trovare la soluzione. Premetto che nella funzione crea_lista l'array di stringhe viene letto regolarmente il problema però è nell'assegnazione e di conseguenza nella stampa. Mi sono reso conto che facendo una printf("%s,%d",head->word,head->dim) solo nel primo caso funziona poi il programma va in blocco. Ho pensato che potrebbe essere un errore che riguarda il caso base della ricorsione. Grazie in anticipo
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct data *next;
typedef struct data {
char *word;
int dim;
next successivo;
}data;
data *crea_lista(char *[]);
void stampa_lista(data *);
int main(void)
{
data *first;
int i=0;
char buff[100],*word[100];
FILE *input;
input=fopen("file.txt","r");
while(fscanf(input,"%s",buff)>0)
{
word[i]=(char *)malloc(100*sizeof(char));
strcpy(word[i],buff);
i++;
}
first=crea_lista(word);
stampa_lista(first);
system("pause");
return 0;
}
data *crea_lista(char *s[])
{ data *head;
if(strcmp(s[0],"")==0)
return NULL;
else { head=malloc(sizeof(data));
strcpy(head->word,s[0]);
head->dim=strlen(head->word);
head->successivo=crea_lista(s+1); return head;
}
}
void stampa_lista(data *head) {
printf("***********************\n");
for(;head!=NULL;head=head->successivo)
{ printf("*Stringa: %s\n",head->word);
printf("*Dimensione: %d\n",head->dim);
}
printf("***********************\n"); }