Problema risolto: c'era un errore (mio) nella funzione ins_in_coda. Questa è quella corretta:
cliente * ins_in_coda ( cliente *testa , cliente *nuovo)
{
if ( testa == NULL)
{
return nuovo;
}
cliente *q = testa;
while ( q->prossimo != NULL )
{
q = q->prossimo;
}
q->prossimo = nuovo;
return testa;
}
PS. Non mettere il punto e virgola dopo le graffe. Non credo sia sbagliato, ma è inutile.