Libpasc-Algorithmen sind die Delphi- und Objekt-Pascal-Bibliothek mit gemeinsamen Datenstrukturen und Algorithmen. Die Bibliothek basiert auf dem C-Algorithmen-Repository und ist eine Reihe von Containern, die für die Pascal-Sprache und das darauf verfügbare Vorlagensystem angepasst sind.
Bibliothek wird getestet für
Holen Sie sich die Quellen und fügen Sie das Quellverzeichnis zum Projektsuchpfad hinzu. Für FPC fügen Sie das Quellverzeichnis der fpc.cfg -Datei hinzu.
Klonen des Repository git clone https://github.com/isemenkov/libpasc-algorithms .
Fügen Sie das Gerät hinzu, das Sie uses möchten.
Ein Testgerüst besteht aus den folgenden Zutaten:
unit-tests .TarrayList sind generische Arrays von T, die die Größe automatisch erhöhen.
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird zum Vergleich von zwei Array -Elementen verwendet. Benötigt für Sortier- und Suchfunktionen.
Weitere Details finden Sie auf der Wiki -Seite.
Tmultiarray ist eine generische Reihe von T -Array von T, die die Größe automatisch erhöhen.
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird zum Vergleich von zwei Array -Elementen verwendet. Benötigt für Sortier- und Suchfunktionen.
Weitere Details finden Sie auf der Wiki -Seite.
Das TsortedArray ist ein automatisches Größen -Array, das seine Elemente in sortierter Reihenfolge speichert. Benutzer definierter Funkor bestimmen die Sortierreihenfolge. Alle Operationen auf einem TsortedArray unterhalten das sortierte Eigentum. Die meisten Vorgänge werden in O (n) Zeit durchgeführt, aber die Suche kann im schlimmsten Fall von o (log n) durchgeführt werden.
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird zum Vergleich von zwei Array -Elementen verwendet. Für die Suchfunktion benötigt.
Weitere Details finden Sie auf der Wiki -Seite.
Eine doppelt verknüpfte Liste speichert eine Sammlung von Werten. Jeder Eintrag in der Liste enthält einen Link zum nächsten Eintrag und den vorherigen Eintrag. Es ist daher möglich, Einträge in die Liste in beide Richtungen zu iterieren.
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird verwendet, um zwei Listenelemente zu vergleichen. Benötigt für Sortier- und Suchfunktionen.
Weitere Details finden Sie auf der Wiki -Seite.
Die AVL -Baumstruktur ist ein ausgewogener binärer Baum, der eine Sammlung von Knoten speichert. Jeder Knoten hat einen Schlüssel und einen Wert, der ihm zugeordnet ist. Die Knoten werden basierend auf der Reihenfolge ihrer Schlüssel in den Baum sortiert. Modifikationen am Baum sind so konstruiert, dass der Baum jederzeit ausbalanciert bleibt (es gibt immer ungefähr gleiche Anzahl von Knoten auf beiden Seiten des Baumes).
Ausgewogene binäre Bäume haben mehrere Verwendungszwecke. Sie können als Zuordnung verwendet werden (um einen Wert zu suchen, der auf dem Schlüssel basierend auf dem Schlüssel gesucht wird) oder als eine Reihe von Schlüssel, die immer bestellt werden.
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird zum Vergleich von zwei Schlüssel verwendet.
Weitere Details finden Sie auf der Wiki -Seite.
Eine Hash -Tabelle speichert eine Reihe von Werten, die von einem Schlüssel angesprochen werden können. Angesichts des Schlüssels kann der entsprechende Wert schnell nachschlagen.
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird zum Vergleich von zwei Schlüssel verwendet.
Weitere Details finden Sie auf der Wiki -Seite.
Eine Multi -Hash -Tabelle speichert eine Reihe von Werten, die von einem Schlüssel angesprochen werden können. Angesichts des Schlüssels kann der entsprechende Wert schnell nachschlagen.
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classKeyBinaryCompareFunctor und ValueBinaryCompareFunctor basieren auf utils.functor.tBinaryFunctor -Schnittstelle und werden zum Vergleich von zwei Schlüssel verwendet.
Weitere Details finden Sie auf der Wiki -Seite.
Ein Satz speichert eine Sammlung von Werten. Jeder Wert kann nur einmal im Satz existieren.
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird zum Vergleich von zwei Elementen verwendet.
Weitere Details finden Sie auf der Wiki -Seite.
Haufentyp. Die Werte mit der niedrigsten Priorität werden oben auf dem Haufen gespeichert und werden die ersten zurückgegeben.
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird zum Vergleich von zwei Elementen verwendet.
Weitere Details finden Sie auf der Wiki -Seite.
Haufentyp. Die Werte mit größter Priorität werden oben auf dem Haufen gespeichert und werden die ersten zurückgegeben.
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor basiert auf Utils.Functor.TBINYFUNCTOR -Schnittstelle und wird zum Vergleich von zwei Elementen verwendet.
Weitere Details finden Sie auf der Wiki -Seite.
Ein Trie ist eine Datenstruktur, die schnelle Zuordnungen von Strings zu Werten liefert.
uses
container.trie;
type
generic TTrie<V> = classWeitere Details finden Sie auf der Wiki -Seite.
Eine doppelte Warteschlange speichert eine Liste von Werten in der Reihenfolge. Neue Werte können von beiden Enden der Warteschlange hinzugefügt und entfernt werden.
uses
container.queue;
type
generic TQueue<T> = classWeitere Details finden Sie auf der Wiki -Seite.
TMemoryBuffer ist eine nützliche Datenstruktur zum Speichern von Speicherblöcken von willkürlichen Größe. Es wird garantiert, dass das Speicherblock gelöscht wird, wenn das Objekt zerstört wird. Diese Klasse basierend auf WXWIDGETS WXMemoryBuffer API -Schnittstelle https://docs.wxwidgets.org/trunk/classwx_memory_buffer.html.
uses
container.memorybuffer;
type
TMemoryBuffer = classWeitere Details finden Sie auf der Wiki -Seite.