[C] Liste Chaînée, prob avec le premier element
Bonjour,
J'ai un projet a rendre pour dans...bientot et j'ai toujours un probleme avec mon programme...
En effet, lors de ma premiere insertion, il y a un bug qui n'insere rien dans le premier element, donc rien dans les suivants bug avec memoire x232 ne peut pas etre written dans 0x00 ou un truc du genre...pourquoi? et comment y remédier?
Une précision, ce programme devra tourner sous linux et je ne peux pas modifier mes typedef et mes parametre (donc je ne peux pas faire
Code:
inserer(Liste*, int)
)
Je vous remercie d'avance pour le temps que vous prenez a étudier mon probleme.
P.S : je sais qu'il y a plein de tutoriaux, faqs etc...mais pour le moment je n'ai pas trouvé la solution.
Voici ce que j'ai en gros :
Code:
1 2 3 4 5
| typedef struct noeud * Noeud;
typedef struct noeud {
int n;
Noeud suivant;
} * Liste; |
main :
Code:
1 2
| Liste l = NULL;
test = inserer(l, val); |
inserer :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| int inserer(Liste l, int x)
{
int test = 0;
Liste lBis = (Liste) malloc (sizeof(struct noeud));
Liste l2 = (Liste) malloc (sizeof(struct noeud));
if(l == NULL)//si la chaine est vide
{
l = (Liste) malloc (sizeof(struct noeud));
(*l).n = x;//on met la valeur au noeud
(*l).suivant = NULL;//on indique que le suivant est null
test = 1;
}
else
{
lBis = l;
while(test == 0)//si la chaine (1er noeud n'est pas null) a été créée
{
if((*lBis).suivant == NULL)//s'il n'y a pas de valeur apres celui de l'insertion
{
(*l2).n = x;//on peut alors ajouter la valeur demandé
(*l2).suivant = NULL;//le suivant est donc null
(*lBis).suivant = l2;//on met le lien entre l'avant dernier et le dernier
test = 1;
}
else
lBis = (*lBis).suivant;
}
}
free(lBis);
free(l2);
return test;
} |