Originariamente inviato da Caiodark
Il secondo if non si verificherà mai perché se prec è null non entra nemmeno nel blocco, sicuro dell'algoritmo?
Avevo fatto confusione con le variabili, al posto di prec ci va curr. Ho sostituito e adesso non mi da più il segementation fault ma nella seconda stampa la lista apparare così come l'ho letta, ovvero non mi cancella l'elemento che ho richiesto di cancellare!
@oregon per quanto riguarda il problema della doppia condizione nell'if, io sapevo che se la prima non era verificata saltava direttamente oltre; comunque ho provato anche a dividere gli if e non cambia nulla, quindi penso che il mio compilatore si comporti in modo " furbo "
( per la cronaca, uso geany ).
edit:
@ who am I
codice:
t_list node_insert(t_list lista,t_info inf)
{
t_node *succ=lista;
t_node *prec=NULL;
t_node *new_node;
while(succ!=NULL && greater(inf,succ->info))
{
prec=succ;
succ=succ->link;
}
new_node=node_create(inf);
if(new_node==NULL)
{
printf("Errore nell'allocazione della memoria\n");
exit(1);
}
else
{
if(prec==NULL)
{
new_node->link=lista;
return new_node;
}
else
{
new_node->link=succ;
prec->link=new_node;
return lista;
}
}
}