Suppression d'elements dans une liste chainée

Fermé
adrigirod Messages postés 1 Date d'inscription dimanche 26 mai 2013 Statut Membre Dernière intervention 26 mai 2013 - 26 mai 2013 à 19:42
Bonjour a tous !

Pour ne rien vous cacher, je dois rendre mon projet de semestre ce soir a minuit, et je me casse les dents sur un problème qui je pense va vous sembler d'une simplicité enfantine.

Je voudrai pouvoir retirer d'une liste chainée tous les éléments dont le champ energy est inférieur ou égal a 0. voici le modèle de structure utilisé:

  
struct Prey_data
{
	float 	energy;
	PREYS*	next_prey;
	bool	alive		    : 1;
	bool uptodate		: 1;	
};


et j'ai pensé a une fonction dans ce style:
extern void hs_goes_out(int i, int j)
{
	PREYS** list_head=NULL;
	PREYS* adress=NULL;
	PREYS* last;
	
	list_head=get_present_prey(i,j);
	adress=*list_head;
	
	//supprime les premiers elements de la liste dont l'énergie est nulle
	while (*list_head&&(*list_head)->energy<=0)
	{
		adress=*list_head;
		*list_head=(*list_head)->next_prey;
		 free(adress);
	}
	last=adress;
	adress=adress->next_prey;
	while (adress)
	{
		if (adress->energy<=0)
			delete_next_prey(last,list_head);
		
		last=adress;
		adress=adress->next_prey;
	}
}



Le problème etant que dans certaines conditions que je ne connais pas, la fonction provoque un seg_fault ou reste figée en boucle infinie.

Je suis a l'écoute attentive de vos conseils =)