Parcours et Affichage d'une Liste Chaînée
Après avoir appris à créer et à connecter des nœuds, il est nécessaire de vérifier que cette liste fonctionne correctement !
Pour cela, écrivons une fonction simple qui affichera toute la liste.
La fonction acceptera un pointeur vers la zone mémoire où est stocké le nœud tête (premier) de la liste.
void printList(struct Node* head) {}
Ensuite, un nœud temporaire current sera créé, avec lequel nous parcourrons toute la liste. Le contenu du nœud current sera égal au contenu du nœud actuel de la liste.
struct Node* current = head;
Pour parcourir la liste, nous utilisons la boucle while(){} avec la condition nécessaire, à savoir, jusqu'à ce qu'un nœud soit trouvé dont le champ next est NULL.
Le nœud temp (temporaire) joue le rôle de nœud tampon. Il est utilisé pour stocker temporairement (et supprimer) le contenu du nœud actuel. Si nous effaçons immédiatement le nœud actuel, nous perdrons la connexion avec le nœud suivant, ce qui signifie que l'accès à la liste sera perdu.
while (current != NULL) { }
printf("\n");
À l'intérieur de la boucle, nous afficherons le contenu du champ data du nœud actuel et modifierons le champ next pour passer au nœud suivant.
printf("%d ", current->data);
current = current->next;
Dès qu'un nœud est trouvé dont le champ next est égal à NULL, la boucle cesse d'afficher le contenu des nœuds et la fonction se termine.
Swipe to start coding
Implémenter une liste chaînée simple avec allocation dynamique de mémoire. L'objectif est de compléter les fonctions printList et freeList.
-
Implémenter une fonction
printListavec un paramètre uniquestruct Node* head.- À l'intérieur de
printList, déclarer une variablecurrentet l'initialiser àhead. - Utiliser une boucle
whilepour itérer tant quecurrentn'est pasNULL. - À chaque itération, afficher le champ
datadecurrentet déplacercurrentvers le nœud suivant. - Après la boucle, afficher un caractère de nouvelle ligne pour séparer la sortie.
- À l'intérieur de
-
À l'intérieur de
freeList, déclarer une variablecurrentet l'initialiser àhead.- Utiliser une boucle
whilepour itérer tant quecurrentn'est pasNULL. - À l'intérieur de la boucle, stocker
currentdans une variable temporairetemp. - Déplacer
currentvers le nœud suivant. - Libérer la mémoire allouée pour
temp.
- Utiliser une boucle
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Génial!
Completion taux amélioré à 4.35
Parcours et Affichage d'une Liste Chaînée
Glissez pour afficher le menu
Après avoir appris à créer et à connecter des nœuds, il est nécessaire de vérifier que cette liste fonctionne correctement !
Pour cela, écrivons une fonction simple qui affichera toute la liste.
La fonction acceptera un pointeur vers la zone mémoire où est stocké le nœud tête (premier) de la liste.
void printList(struct Node* head) {}
Ensuite, un nœud temporaire current sera créé, avec lequel nous parcourrons toute la liste. Le contenu du nœud current sera égal au contenu du nœud actuel de la liste.
struct Node* current = head;
Pour parcourir la liste, nous utilisons la boucle while(){} avec la condition nécessaire, à savoir, jusqu'à ce qu'un nœud soit trouvé dont le champ next est NULL.
Le nœud temp (temporaire) joue le rôle de nœud tampon. Il est utilisé pour stocker temporairement (et supprimer) le contenu du nœud actuel. Si nous effaçons immédiatement le nœud actuel, nous perdrons la connexion avec le nœud suivant, ce qui signifie que l'accès à la liste sera perdu.
while (current != NULL) { }
printf("\n");
À l'intérieur de la boucle, nous afficherons le contenu du champ data du nœud actuel et modifierons le champ next pour passer au nœud suivant.
printf("%d ", current->data);
current = current->next;
Dès qu'un nœud est trouvé dont le champ next est égal à NULL, la boucle cesse d'afficher le contenu des nœuds et la fonction se termine.
Swipe to start coding
Implémenter une liste chaînée simple avec allocation dynamique de mémoire. L'objectif est de compléter les fonctions printList et freeList.
-
Implémenter une fonction
printListavec un paramètre uniquestruct Node* head.- À l'intérieur de
printList, déclarer une variablecurrentet l'initialiser àhead. - Utiliser une boucle
whilepour itérer tant quecurrentn'est pasNULL. - À chaque itération, afficher le champ
datadecurrentet déplacercurrentvers le nœud suivant. - Après la boucle, afficher un caractère de nouvelle ligne pour séparer la sortie.
- À l'intérieur de
-
À l'intérieur de
freeList, déclarer une variablecurrentet l'initialiser àhead.- Utiliser une boucle
whilepour itérer tant quecurrentn'est pasNULL. - À l'intérieur de la boucle, stocker
currentdans une variable temporairetemp. - Déplacer
currentvers le nœud suivant. - Libérer la mémoire allouée pour
temp.
- Utiliser une boucle
Solution
Merci pour vos commentaires !
single