typedef elem* lista;
definisce un alias per un puntatore a elem, quindi tutte le volte che vedi scritto lista e come se scrivessi elem*.
nella funzione crealista la riga
for (int i+1; i<=n, i++)
i č indefinito e quindi comporta risultati inaspettati. Inoltre non č definito p->inf. La funzione appare purtroppo non molto chiara nelle finalitā e con errori e non č possibile dirti quindi come sistemarla.
Tieni infene presente che nella std library esiste un tipo list giā pronto all'uso.
ciao
sergio