Ben le problème c'est que ton code est incompréhensible sauf pour toi (ou alors faut l'examiner plus en détail)
1) tu utilises un type "stack" qui masque une étoile puis tu passes à ta fonction push() l'adresse de stack qui sera donc un double étoile. Je sais même pas si le pointeur initial a été alloué avant de remplir son contenu (ça doit sûrement se savoir si on examine le code plus en détail mais si un code de 50 lignes on doit mettre 10mn à le déchiffrer c'est qu'il est déjà mal écrit)
2) tu utilises un type "stack" et une variable "Stack" (ou l'inverse je sais plus). Tu veux pas utiliser en plus une structure sTack histoire qu'on soit encore plus paumés ???
Donc commence par nommer tes types "t_qqchose". Ne masque pas les étoiles (c'est inutile) et là tout le monde s'en sortira bien plus facilement (et ptet même que t'arriveras à trouver toi-même ton erreur).
Si tu veux je peux même te dire comment j'aurais défini mes objets
1) une structure "s_element" qui contient ma data et le next
1 2 3 4
| typedef struct s_element {
int value; // Le contenu de la liste chainée
struct s_element *next; // L'élément suivant de la liste chainée.
} t_element; |
2) une structure "s_stack" qui contient le premier pointeur vers s_element. Cette seconde structure peut sembler inutile vu qu'elle ne contient qu'un truc mais l'avantage, c'est que si demain tu veux rajouter d'autres choses comme par exemple le nombre d'éléments, ou alors la mémorisation de l'élément en cours, te suffit de le rajouter simplement dans cette structure et les modif sont minimes.
1 2 3
| typedef struct {
t_element *first; // Le premier élément
} t_stack; |
Partager