LIBPASC-Algorithms est Delphi et la bibliothèque d'objets Pascal de structures de données et d'algorithmes communs. La bibliothèque est basée sur le référentiel C-Algorithms et il s'agit d'un ensemble de conteneurs adaptés pour la langue Pascal et le système de modèle disponible.
La bibliothèque est testée pour
Obtenez les sources et ajoutez le répertoire source au chemin de recherche de projet. Pour FPC, ajoutez le répertoire source au fichier fpc.cfg .
CLONE Le référentiel git clone https://github.com/isemenkov/libpasc-algorithms .
Ajoutez l'unité que vous souhaitez utiliser à la clause uses .
Un cadre de test se compose des ingrédients suivants:
unit-tests .Tarraylist sont des tableaux génériques de T qui augmentent automatiquement en taille.
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux éléments de tableau. Nécessaire pour les fonctions de tri et de recherche.
Plus de détails Lisez sur la page Wiki.
Tmultiarray est un tableau générique de tableau de T qui augmente automatiquement en taille.
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux éléments de tableau. Nécessaire pour les fonctions de tri et de recherche.
Plus de détails Lisez sur la page Wiki.
Le TSORDEDARRAY est un tableau de redimensionnement automatique qui stocke ses éléments dans l'ordre trié. Functor défini par l'utilisateur Déterminez l'ordre de tri. Toutes les opérations sur un TSORDEDARRAY conservent la propriété triée. La plupart des opérations sont effectuées en temps o (n), mais la recherche peut être effectuée dans O (log n) pire des cas.
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux éléments de tableau. Nécessaire pour la fonction de recherche.
Plus de détails Lisez sur la page Wiki.
Une liste à double liaison stocke une collection de valeurs. Chaque entrée de la liste contient un lien vers l'entrée suivante et l'entrée précédente. Il est donc possible d'itérer les entrées dans la liste dans les deux sens.
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux éléments de liste. Nécessaire pour les fonctions de tri et de recherche.
Plus de détails Lisez sur la page Wiki.
La structure de l'arbre AVL est un arbre binaire équilibré qui stocke une collection de nœuds. Chaque nœud a une clé et une valeur qui lui est associée. Les nœuds sont triés dans l'arbre en fonction de l'ordre de leurs clés. Les modifications de l'arbre sont construites de telle sorte que l'arbre reste équilibré à tout moment (il y a toujours un nombre à peu près égal de nœuds de chaque côté de l'arbre).
Les arbres binaires équilibrés ont plusieurs utilisations. Ils peuvent être utilisés comme mappage (à la recherche d'une valeur basée sur sa clé), ou comme un ensemble de clés qui est toujours commandée.
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux touches.
Plus de détails Lisez sur la page Wiki.
Une table de hachage stocke un ensemble de valeurs qui peuvent être traitées par une clé. Compte tenu de la clé, la valeur correspondante peut être recherchée rapidement.
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux touches.
Plus de détails Lisez sur la page Wiki.
Une table Multi Hash stocke un ensemble de valeurs qui peuvent être traitées par une clé. Compte tenu de la clé, la valeur correspondante peut être recherchée rapidement.
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classKeyBinaryCompareFunctor et ValueBinaryCompareFunctor sont basés sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux clés.
Plus de détails Lisez sur la page Wiki.
Un ensemble stocke une collection de valeurs. Chaque valeur ne peut exister qu'une seule fois dans l'ensemble.
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux éléments.
Plus de détails Lisez sur la page Wiki.
Type de tas. Les valeurs avec la priorité la plus faible sont stockées en haut du tas et seront les premières retournées.
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux éléments.
Plus de détails Lisez sur la page Wiki.
Type de tas. Les valeurs avec la plus grande priorité sont stockées en haut du tas et seront les premières retournées.
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor est basé sur l'interface utils.functor.tbinaryfunctor et utilisé pour comparer deux éléments.
Plus de détails Lisez sur la page Wiki.
Un Trie est une structure de données qui fournit des mappages rapides des chaînes aux valeurs.
uses
container.trie;
type
generic TTrie<V> = classPlus de détails Lisez sur la page Wiki.
Une file d'attente à double fin stocke une liste de valeurs dans l'ordre. De nouvelles valeurs peuvent être ajoutées et supprimées de chaque extrémité de la file d'attente.
uses
container.queue;
type
generic TQueue<T> = classPlus de détails Lisez sur la page Wiki.
TMemoryBuffer est une structure de données utile pour stocker des blocs de mémoire de taille arbitraire. Cela garantit la suppression du bloc de mémoire lorsque l'objet est détruit. Cette classe basée sur l'interface API WXWidgets WxmeMoryBuffer https://docs.wxwidget.org/trunk/classwx_memory_buffer.html.
uses
container.memorybuffer;
type
TMemoryBuffer = classPlus de détails Lisez sur la page Wiki.