Originariamente inviato da Kandalf
e *paus nn lo uso +?

nn ho capito molto bene...
Mi so spiegare molto male :adhone:

*paus lo usi soltanto come variabile temporanea: la allochi e poi la associ a p->... Se invece allochi direttamente p fai molto prima


Nella funzione aggiungi() esegui un controllo per vedere se p è NULL oppure no...
Se p è NULL devi allocarlo in memoria con la funzione malloc e inizializzargli le variabili...
Se p invece non è NULL (quindi esiste già) devi richiamare la stessa funzione passandogli p->next, e questo avviene finchè non trovi l'ultimo valore di p, quello la cui variabile next non è stata ancora allocata... Quando viene trovata, la nuova variabile viene allocata e le funzioni vengono richiamate all'opposto (questo per la ricorsione)...
Se te ogni volta allochi *paus, lo fai molte volte non necessarie... altrimenti lo faresti solo una volta...

Ho scorto un altro piccolo erroretto...
la funzione malloc restituisce un puntatore a void... Devi eseguire il cast perchè restituisca un valore del tipo voluto: p->next = (hello *) malloc (sizeof(hello));

Prova a sostituire la tua funzione aggiungi con questa:

codice:
/* Crea elementi successivi */
hello *aggiungi(hello *p, int ins)
{
	if (p == NULL) {
		p = (hello *) malloc(sizeof(hello));
		p->n = ins;
		p->next = NULL;
	}
	else {
		p = aggiungi(p->next, ins);
	}
	return p;
}
Se hai altre domande non esitare a porle