Problemme sur les listes doublements chaines

bonjour a tous j'ai un peutit problemme concernant les listes doublements chaines plus precisement l'insrection au debut d'une liste .
voici l'algorithme:

<code type="c">anneau *nouv;
nouv = malloc(sizeof(anneau));
if(!nouv) exit(1);
nouv->valeur = val;
nouv->suivant = L->premier;
nouv->precedent = NULL;
if(L->premier)
L->premier->precedent = nouv;
else L->dernier = nouv;
L->premier = nouv; }</code>
aidez moi a comprendre cette algoritme merci d'avence.
Configuration: Windows Vista
Internet Explorer 7.0

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. merci pour ce que tu ma envoyer mes j'ai pas toujours compris ces deux conditions !!!!
    en realite je n'arrive pas a imagine la liste (je ne connais pas son mecanisme).
    merci d'avence.
    1. Modérateur
      en realite je n'arrive pas a imagine la liste (je ne connais pas son mecanisme).

      c'est la raison pour laquelle j'ai mis des photos dans le tutoriel

      Dans une liste doublement chaînée tu as 2 pointeurs :
      precedent qui permet la liaison vers l'élément précédent
      suivant qui permet la liaison vers l'élément suivant

      pour inserer un élément au début de la liste il faut que tu fasse ça

      Les pointeurs de nouveau élément

      1. mettre le pointeur précédent du nouveau élément vers NULL (ce qui signifie qu'il sera le 1er élément)
      2. mettre le pointeur suivant du nouveau élément vers l'élément qui est actuellement le 1er de la liste

      Les pointeurs du 1er élément qui deviendra le 2ème

      1. le pointeur precedent doit pointer vers le nouveau élément ajouté
      2. le pointeur suivant du ex 1er élément point déjà vers l'élément suivant donc rien à modifier

      Le pointeur de contrôle de 1er élément doit maintenant pointé vers le nouveau élément qui est maintenant le 1er