Problème pour dépiler une pile

Fermé
aurel_67_1 Messages postés 10 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 11 mars 2011 - 30 nov. 2010 à 21:39
aurel_67_1 Messages postés 10 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 11 mars 2011 - 30 nov. 2010 à 21:43
Bonjour,
Je n'arrive pas à dépiler une Personne de ma pile de personnes, à chaque nouvelle tentative j'obtiens une erreur de segmentation.

Voici la structure Personne :

typedef struct str_personne {
	int id;
        char * nom;
        int age;
}Personne;


La structure de ma pile de personnes :

typedef struct str_p_personnes
{
	Personne p; 
	struct str_p_personnes* s; //rang suivant
}Spile, *P_Personnes;


Et ma fonction dépiler qui malheureusement ne fonctionne pas :
P_Personnes depiler(P_Personnes pers)
{
	while(p->s->s!=NULL)
	{
		free(p->s);   
		p->s=NULL; //segmentation fault
	}
			
	return p;
}


Empiler, sommet, et les autres opérations fonctionnent très bien, à part dépiler.

Si quelqu'un pouvait m'aider.

Merci d'avance !


1 réponse

aurel_67_1 Messages postés 10 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 11 mars 2011
Modifié par aurel_67_1 le 30/11/2010 à 21:45
J'ai oublié, ma fonction empiler (qui fonctionne sans dépiler) :

#define MALLOC(t) ((t*) malloc (sizeof(t)))

P_Personnes empiler(P_Personnes p_p, Personne pers)  
{  
 P_Personnes q = MALLOC (Spile);  
 q->p = pers;  
 q->s = p_p;  
 return q;  
}
0