Structures de Données & Algo (IGL245)
Thème :
Junior
1 vues ·7/10 leçonsPARTIE 2 (Fin) : LISTES DOUBLEMENT CHAÎNÉES
TP 10 : Concepts
Une liste doublement chaînée permet de parcourir la liste dans les deux sens (avant et arrière). Chaque nœud possède deux pointeurs.
typedef struct DoubleNode {
int data;
struct DoubleNode *prev; // Vers l'élément précédent
struct DoubleNode *next; // Vers l'élément suivant
} DoubleNode;
Schéma :
Avantages et Inconvénients
- + On peut supprimer un nœud connaissant seulement son pointeur (car on a accès à
prev, pas besoin de parcourir depuis le début). - + Parcours inverse facile.
- - Prend plus de mémoire (2 pointeurs par nœud).
- - Gestion plus complexe des mises à jour (il faut maintenir 2 liens à chaque insertion/suppression).
Insertion
Lors de l’insertion, il faut connecter 4 liens :
newNode->nextnewNode->prevprevNode->nextnextNode->prev
// Exemple : Insertion en tête
void insertAtHead(DoubleNode** head, int value) {
DoubleNode* newNode = createDoubleNode(value);
newNode->next = *head;
newNode->prev = NULL;
if (*head != NULL) {
(*head)->prev = newNode;
}
*head = newNode;
}
TP 10 : Exercice
Implémentez une liste double avec printForward() et printBackward() pour vérifier que les liens sont corrects dans les deux sens.
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur PARTIE 2 (Fin) : LISTES DOUBLEMENT CHAÎNÉES. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.