Problemme sur les listes doublements chaines

Fermé
inteligence Messages postés 42 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 10 septembre 2011 - 22 déc. 2007 à 19:07
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 22 déc. 2007 à 19:39
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.

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
22 déc. 2007 à 19:11
Salut,

regarde ici pour comprendre insertion au début de la liste
0
inteligence Messages postés 42 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 10 septembre 2011
22 déc. 2007 à 19:30
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.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
22 déc. 2007 à 19:39
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

0