scrivere

lista p0 = NULL;
oppure
elem* lista p0 = NULL;

č equivalente.

Per quanto riguarda l'esempio del testo universitario dovresti postare tutto il codice, se ti č possibile, con il main.
Come ti dicevo l'istruzione
codice:
    for (int i+1; i<=n, i++)
non inizializza la variabile i. A meno che fosse scritto
codice:
for (int i =1; i<=n, i++)
e tu hai trascritto erroneamente i+1
ciao
sergio