mi spiegate concettualmente come lavora queste 2 funzioni
nel primo come si costruisce la lista temp?

codice:
hello *invord(hello *p)
{
	hello *temp;
	
	if (p == NULL || p->next == NULL)
		return p;
	else {
		temp = invord(p->next);
		p->next->next = p;
		p->next = NULL;
		return temp;
	}
}
codice:
void stampainv(hello *p)
{
	if (p != NULL) {
		stampainv(p->next);
		printf("%d -> ", p->n);
	}
}