J'aimerai faire une fonction qui ajoute un maillon à la fin d'une liste mais il semblerait qu'il y a des erreurs dans ma fonction et je ne vois pas ca pourrait être quoi (et le compilateur n'indique pas où sont les erreurs).
Ta fonction crée une liste s'il n'y en a pas. C'est discutable; ajouter un élément à une liste qui n'existe pas devrait plutôt être une erreur. Par contre, tu ne traites pas le cas où la liste existe mais est vide. Dans ce cas l'élément ajouté est à la fois le premier et le dernier.
Je suis d'accord avec Dalfab sur tout ... Pour une liste vide au départ, tu devras mettre first = last = nouveau Je n'aime pas l'idée de créer le nouveau au début. C'est propice aux fuites de mémoire. On le fait quand on est certain de pouvoir le faire.
- Edité par PierrotLeFou 13 novembre 2022 à 19:10:28
Le Tout est souvent plus grand que la somme de ses parties.
> la fonction crée une liste s'il n'y en a pas. C'est discutable;
Surtout que ça ne va pas marcher. Du tout.
La fonction reçoit dans le pointeur ll l'adresse d'une structure Liste, ou NULL, en paramètre
void appendToLL(LinkedList *ll, int value)
On peu tfaire tout ce qu'on veut dans la fonction, en particulier modifier ll, ça ne modifiera pas la variable du côté de l'appelant.
Exemple
LinkedList *l = NULL;
appendToLL(l, 33);
// ici le pointeur l est toujours NULL
Qui plus est, si on revient aux bases :
le rôle de la fonction est d'ajouter une valeur dans une liste
comme C ne connaît que le passage de paramètres par valeur, et que ça modifie la liste, on passe son adresse. contrainte technique due à la pauvreté du langage.
quoi qu'il en soit, ça suppose que la liste existe. Sinon ça n'a aucun sens.
Si on veut une opération qui crée une nouvelle liste contenant une valeur, c'est une autre histoire.
- Edité par michelbillaud 14 novembre 2022 à 11:07:18
Bonjour, merci à tous pour vos réponses. J'ai revu mon cours sur les listes et je comprends mieux maintenant. Du coup j'ai corrigé ma fonction et je pense que la c'est bon. Merciii
La création d'un nouveau noeud initialisé peut être utile ailleurs, c'est mieux de l'extraire dans une fonction pour pouvoir la réutiliser
Les 5 premières lignes deviennent
Node *element = newNode(value);
Et ça nous donne l'adresse d'un noeud initialisé avec la valeur indiquée et suivant = null
Du coup, il ne reste plus qu'a faire l'attelage du wagon au bout du train (tchou tchou), soit après le dernier wagon, soit derrière la locomotive .
- Edité par michelbillaud 17 novembre 2022 à 9:03:50
Ajouter un maillon à la fin d'une liste chainée
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent