Anche questo funziona, ma scambia i puntatori e non i valori, che mi sembra sia quello che ti serve:

codice:
void swap(lemma**a, lemma**b)
{
	lemma *temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

swap(&a, &b);