e sopprattutto cosa significa if( ! empty(testa) )
lo leggi come

if not (la funzione empty ritorna true) ....
dove empty ritorna vero se la testa della lista è vuota, che vuol dire che il puntatore alla sua testa vale NULL ( o zero).
ciao