Liste doublement chaînées

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

  1. 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.
    1. svp vous pouvez la corriger pour moi ??
    2. Contributeur
      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.