Devo scrivere 2 funzioni, una che rende una lista lineare in una circolare, e l'altra che cerca un intero in una lista circolare...
Che errore c'è nelle mie implementazioni?

la lista l'ho definita così:
struct lista {
int elem;
struct lista *next;
};
typedef struct lista lista;

Dopo essermi creato la lista, ecco le mie funzioni:

lista *rendiCircolare(lista *testa){
lista *aux;
aux = testa;
while (aux!=NULL){
aux = aux->next;
}
aux->next = testa;
return (testa);
}

// .............

int cercaintero (lista *testa,int i){
lista *aux;
aux = testa;

if (testa->elem==i) return 1;
else while(aux!=testa){
if (testa->elem==i)
return 1;
else aux=aux->next;
}
return NULL;
}

sapreste individuarmi gli errori? grazie!