Liste con inserimento in coda

di il
1 risposte

Liste con inserimento in coda

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?

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte