Liste doublement chaînées

Fermé
mast20 Messages postés 12 Date d'inscription mercredi 2 mars 2016 Statut Membre Dernière intervention 1 mai 2016 - 30 avril 2016 à 22:04
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 2 mai 2016 à 08:34
Bonjour, je voudrai savoir est ce que cette fonction d insertion en tete d une liste doublement chainees est correcte ou non :

typedef struct node
{ int ele;
struct node *prec;
struct node *suiv;
}listedc;

listedc *insertion-en-tete(listedc* l, int x)
{listedc *pr=(listedc)malloc(sizeof(listedc));
if(!pr){printf("prob de memoire");exit(-1);}
pr->ele=x;
pr->prec=NULL;
pr->suiv=l;
l->prec=pr;
l=pr;
return l;
}




1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
1 mai 2016 à 15:05
Bonjour,
Le nom de la fonction n'est pas valide. Plutôt insertion_en_tete.
Le cast du malloc n'est pas valide. Plutôt l'enlever ou mettre (listedc*)
'l' est-il bien le premier de liste avant appel? Et si la liste est vide que vaut 'l'? S'il peut être vide, il faut corriger la fonction.
0
mast20 Messages postés 12 Date d'inscription mercredi 2 mars 2016 Statut Membre Dernière intervention 1 mai 2016
1 mai 2016 à 19:15
svp vous pouvez la corriger pour moi ??
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101 > mast20 Messages postés 12 Date d'inscription mercredi 2 mars 2016 Statut Membre Dernière intervention 1 mai 2016
2 mai 2016 à 08:34
non
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
1 mai 2016 à 19:56
Le cast du malloc n'est pas valide.
Oui, et pas seulement car son cast est incorrect, mais aussi car on ne caste pas le résultat d'un malloc (ou d'un void* plus généralement) car c'est redondant, la "conversion" est faite automatiquement.
0