Le alternative sono
nodo* inserimento_in_testa(nodo *p, int n)
{
...
}
int main()
{
nodo *testa = NULL;
testa = inserimento_in_testa(testa, 5);
...
}
o
void inserimento_in_testa(nodo **p, int n)
{
...
}
int main()
{
nodo *testa = NULL;
inserimento_in_testa(&testa, 5);
...
}
La seconda, anche se magari inizialmente può sembrare meno intuitiva, comporta notevoli vantaggi, tra cui la possibilità di scrivere codice più conciso.
P.S.
Come già detto se il linguaggio è C++
- non c'è bisogno del typedef sulla struct in quanto la definizione di una struct comporta la creazione di un nuovo tipo;
- al posto di NULL dovresti utilizzare nullptr.