Je cherchais dans Generics.Collections et j'ai remarqué qu'il n'y avait pas de liste chaînée. Bien sûr, ils sont simples à faire, mais je pensais que c'était étrange qu'il n'y en avait pas un (ou je l'ai juste manqué). Les listes liées sont-elles dépassées par rapport aux nouvelles structures de données modernes, ou une liste générique liée est-elle nécessaire? Est-ce que quelqu'un en connaît un?Liste générique liée pour Delphi 2009
Répondre
Connaissez-vous le DeHL?
Je pense que le TLinkedList<T>
de l'unité DeHL.Collections.LinkedList.pas est exactement ce que vous cherchez.
Autrefois, presque tous les logiciels sérieux contenaient des listes ou des arbres liés.
Je n'ai pas beaucoup utilisé les listes chaînées, mais les arbres sont une autre histoire. Avec l'introduction des tableaux dynamiques, il n'y a pas tellement besoin de listes chaînées. Mais je peux imaginer que vous voulez l'utiliser si votre structure de données est souvent modifiée (ajouter + supprimer).
Vous pouvez facilement créer vous-même une liste générique, en utilisant une classe de conteneur et des enregistrements pour les éléments.
Je ne connais aucune liste générique, liée dans le Delphi RTL existant.
Cependant, ils sont encore très utiles en tant que structure de données. Surtout si vous incluez des variantes sur une liste liée, comme un arbre binaire ou un arbre binaire. Contrairement à une liste régulière, une liste chaînée peut être étendue, modifiée ou modifiée sans déplacer les données en mémoire. Ils sont très faciles à mettre en œuvre et fonctionnent bien dans un code purement fonctionnel qui ne permet pas la mutation de données existantes. C'est donc toujours une structure de données très utile.
N'est-ce pas ce que tStringList est pour?
(ducking)
En fait, tout ListeT générique fonctionne bien comme une liste chaînée, et fournit la plupart des fonctionnalités nécessaires. La technique ancestrale transmise par nos ancêtres consistait à stocker un pointeur vers la mémoire dans chaque enregistrement, et naviguer vers cela a été facilement remplacé par des tableaux dynamiques et faire des choses ... plus génériquement.
- 1. FitNesse pour Delphi 2006/Delphi 2007/Delphi 2009
- 2. DeCAL et Delphi 2009
- 3. Fonction de commentaire PDF pour delphi 2009
- 4. "Les bases de Delphi" dans Delphi 2009
- 5. Delphi 2009? Ok ou buggy?
- 6. Erreur de refactorisation Delphi 2009
- 7. PNG dans Delphi 2009 Imagelists et images
- 8. Comment réparer Delphi 2009 Data Explorer?
- 9. Enregistrement d'une liste liée
- 10. Editeur de connexion DBExpress autonome (Delphi 2009)
- 11. Delphi 2009 OnKeyDown ne piège que Delphi 2007 ne
- 12. Delphi 6 avec RAD Studio 2009
- 13. Delphi 2009 problème de compilation de génériques
- 14. Conversion TMemoryStream à 'String' dans Delphi 2009
- 15. Delphi 2009 et la mémoire de copie
- 16. Utiliser l'option debug dcus dans Delphi 2009?
- 17. C++ liste liée accidentellement statique
- 18. Comment Delphi 2009 convertit les projets Delphi 7 pour les configurations de construction
- 19. Liste complète des définitions pour les versions Delphi
- 20. Liste des pilotes dbexpress gratuits pour Delphi
- 21. Liste/Dictionnaire générique
- 22. liste générique divisée
- 23. .NET Casting Liste générique
- 24. Liste déroulante générique
- 25. WPF/DeferRefresh avec la liste déroulante liée
- 26. Installer la dernière version d'Indy 10 sur Delphi 2009
- 27. Delphi 2009 Contrôles du ruban - Cadre en verre
- 28. Liste liée: Cette solution est-elle bonne?
- 29. Comment trier une liste liée en SQL?
- 30. Convertir une chaîne en PAnsiChar en Delphi 2009
Lors de l'insertion dans un TList, il faut un mouvement de mémoire de tout ce qui le suit dans le tableau. Une liste liée nécessite simplement de changer un pointeur. –
Certes, ce serait beaucoup plus efficace pour les grandes listes et elles ne sont vraiment pas si difficiles à écrire. Ulrichb a la meilleure réponse, la mise en œuvre, il est juste ce que vous avez demandé. – skamradt