codice:
app->next=crea_lista(testa,app,n-1);
Guarda bene questa linea (è nel primo if). Supponiamo che n valga 1: perciò, la chiamata viene fatta con n = 0, e quindi crea_lista ritorna null, il che ci porta ad avere che app->next = NULL, e fin qui tutto bene.

Ora supponiamo che n sia maggiore di 1, ad esempio che valga 2. A cosa dovrebbe puntare app->next, e quale valore gli viene assegnato dalla tua funzione?