Ciao a tutti mi sono appena iscritto!
Sto cercando di implementare per un progetto un tipo di lista di puntatori a strutture (qua ho semplificato mettendo invece int data) che inserisca l'ultimo elemento in coda in modo da poter stampare tutti gli elementi in ordine di inserimento
struct list {
int data;
struct list *next;
};
struct list *aggiungi (struct list *h, int val){
printf("aggiung() iniziata \n");
struct list *app;
app = (struct list *) malloc (sizeof(struct list));
if(app== NULL) { perror("malloc failed: "); exit(9); }
struct list *tmp;
tmp = (struct list *) malloc (sizeof(struct list));
if(tmp== NULL) { perror("malloc failed: "); exit(9); }
app->data = val;
/* parte su cui ho dubbi */
if(h->next!= NULL){
printf("h!=null \n");
tmp=h->next;
h->next=app;
app->next=tmp;
}
else app->next=h;
return (app);
}
int main ()
{
struct list *head=NULL;
int val,i;
for(i=0;i<4;i++){ //4 è un numero casuale giusto per vedere se funziona
printf ("valore: ");
scanf ("%d", &val);
head = aggiungi (head, val);
}
return 0;
}
putroppo mi da segmentation fault appnea entra nell'if (forse perchè non gli piace che uso h->next ?)
suggirementi?