Salve a tutti. Non riesco a cancellare un nodo di una lista, in particolare ricevo come errore " segmentation fault". Il main e la struttura sono i seguenti :
codice:
  
int main()
{
	t_info inf;
	t_list lista=NULL;
	int scelta=1;
	while(scelta!=0)
	{
		inf=read_info();
		lista=node_insert(lista,inf);
		printf("Vuoi inserire un'altro nominativo? 1/0 \n");
		scanf("%d",&scelta);		
	}
	print_list(lista);
	printf("Quale nominativo vuoi cancellare?\n");
	inf=read_info();
	lista=node_delete(lista,inf);
	print_list(lista);
	return EXIT_SUCCESS;
}
codice:
  
struct s_info
{
	char nome[15];
	char cognome[15];
	int eta;
};

e prima della "node_delete" non ci sono errori perchè va tutto bene. La funzione e' :
codice:
   
t_list node_delete(t_list lista,t_info inf)
{
	t_node* prec=NULL;
	t_node* curr=lista;
	while((curr!=NULL) && greater(inf,curr->info))
	{
		prec=curr;
		curr=curr->link;
	}
	if(prec!=NULL && equal(inf,curr->info))
	{
	    if(prec==NULL)
		{
			lista=curr->link;
		}
		else
		{
			prec->link=curr->link;
		}
		free(curr);
		return lista;
	}
	return lista;
	
}
"greater" funziona sicuramente bene perchè l'ho già usato per creare la lista ordinata, mentre equal è questa
codice:
   
bool equal(t_info info1,t_info info2)
{
	if( ((strcmp(info1.nome,info2.nome))==0)  && ((strcmp(info1.cognome,info2.cognome))==0) && (info1.eta==info2.eta))
	return true;
	else
	return false;
}