Discussion:Liste chaînée

Dernier commentaire : il y a 2 ans par Luc Hermitte dans le sujet Amélioration du code C++
Autres discussions [liste]
  • Admissibilité
  • Neutralité
  • Droit d'auteur
  • Article de qualité
  • Bon article
  • Lumière sur
  • À faire
  • Archives
  • Commons

Ancien contenu modifier

Titre modifier

J'aimerais faire remarquer que la nouvelle orthographe de chaînée est chainée (réforme 1990). Quelqu'un sait-il si l'orthographe adoptée sur Wikipédia est standard ou réformée ?

Il semblerait que cela ne soit pas obligatoire (Catégorie:Graphie de 1990) : « comme Wikipédia ne favorise pas cette norme graphique qui n'est pas encore largement utilisée, les articles concernés sont donc tous des redirections sauf exceptions ». Et la redirection existe. Sanao 12 novembre 2006 à 16:59 (CET)Répondre

Exemple concret d'un liste modifier

Est-il intéressant de proposer une version complète d'une liste ? Par exemple, on peut montrer le code source des fonctions nécessaires à une insertion ou à une suppression. Je suis capable de faire cela en C/C++ mais je ne sais pas si cela est judicieux (cela pourrait surcharger l'article).MGK (discuter) 18 juillet 2014 à 18:22 (CEST)Répondre

Pour l'instant, je vais commencer par proposer une classe en C++ basique avec une méthode pour ajouter un élément au début et en supprimer un à la fin. Il réutilisera la structure proposée en C.MGK (discuter) 18 juillet 2014 à 18:31 (CEST)Répondre

Pertinence du langage C++ dans l'exemple complet modifier

Le langage C++ disposant dans la STL de la classe list, qui permet de faire des listes doublement chaînées (ce que n'indique pas l'article qui pourrait renvoyer à Sequence container (C++)#List (en) pour ne pas induire en erreur le lecteur sur ce point), il me semble plus pertinent de proposer un exemple en C. --Treebeard (discuter) 21 octobre 2014 à 11:40 (CEST)Répondre

Amélioration du code C++ modifier

J'ai procédé à une correction et amélioration du code C++.

Entre autres choses dans la fonction membre d'ajout, le new est réalisé en tout premier pour offrir une garantie forte de résistance aux exceptions: si le new échoue, l'instance n'est pas altérée.

Je suis resté sage dans mes modifications.

  • Idéalement, il faudrait séparer itération et point d'entrée vers les chaînons. Cela permettrait d'éviter les opérations début et fin qui moulinent systématiquement alors que l'on pourrait stocker ces 2 pointeurs dans la liste. AMA, on n'est plus à sizeof T* sur les machines où nous faisons de l'allocation dynamique. Cependant cela nécessiterait l'introduction d'une notion d'itérateur indépendante.
  • Je n'ai pas touché à la programmation défensive en place, alors que l'on pourrait avoir des préconditions fortes à base d'assert() -- en attendant le support de la programmation par contrat dans une version future du langage. Note que cela aurait évité le bug sur supprimer_dernier dans le cas vide, bug introduit par le faux sentiment de sécurité vu fin ne plante pas... J'y mis un assert du coup, mais il faudrait harmoniser...
  • J'aurai trouvé un while (index->suivant) plus expressif qu'un while (index->suivant != nullptr) ou encore if (not index->suivant) bien plus parlant que if (index->suivant == nullptr).

Bref, +1 aux autres remarques pour utiliser une formulation plus algorithmique (comme sur la page anglaise) plutôt que d'ouvrir la porte à des subtilités sur chaque choix de langage.

--Luc Hermitte (discuter) 14 juillet 2021 à 11:34 (CEST)Répondre

Revenir à la page « Liste chaînée ».