Non ho provato tutto il codice ma in questa linea

while((curr!=NULL) && greater(inf,curr->info))

quando curr è uguale a NULL, curr->info ti darà un errore ... no ?