Libpasc-Algorithms-это Delphi и объектная библиотека общих структур данных и алгоритмов Pascal. Библиотека основана на репозитории C-альгоритмов, и это набор контейнеров, адаптированных для языка Pascal и доступной на нем системе шаблонов.
Библиотека проверяется на
Получите источники и добавьте исходный каталог в путь поиска проекта. Для FPC добавьте исходный каталог в файл FPC.CFG .
Клон репозиторий git clone https://github.com/isemenkov/libpasc-algorithms .
Добавьте блок, который вы хотите использовать в пункт « uses .
Структура тестирования состоит из следующих ингредиентов:
unit-tests .Tarraylist - это общие массивы T, которые автоматически увеличиваются в размерах.
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classBinaryComparefunctor основан на интерфейсе utils.functor.tbinaryfunctor и используется для сравнения двух элементов массива. Необходимо для сортировки и поисковых функций.
Более подробная информация читайте на странице вики.
Tmultiarray - это общий массив массива T, который автоматически увеличивается в размере.
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classBinaryComparefunctor основан на интерфейсе utils.functor.tbinaryfunctor и используется для сравнения двух элементов массива. Необходимо для сортировки и поисковых функций.
Более подробная информация читайте на странице вики.
TsortedArray - это автоматически изменяющий размерный массив, который хранит свои элементы в отсортированном порядке. Пользователь определенный функтор определяет порядок сортировки. Все операции на TsortedArray поддерживают отсортированное свойство. Большинство операций выполняются во время O (n), но поиск может быть выполнено в худшем случае O (log n).
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classBinaryComparefunctor основан на интерфейсе utils.functor.tbinaryfunctor и используется для сравнения двух элементов массива. Необходимо для поиска.
Более подробная информация читайте на странице вики.
В двухстороннем списке хранится коллекция значений. Каждая запись в списке содержит ссылку на следующую запись и предыдущую запись. Поэтому возможно итерация над записями в списке в любом направлении.
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classBinaryCompareFunctor основан на интерфейсе utils.functor.tbinaryfunctor и используется для сравнения двух элементов списка. Необходимо для сортировки и поисковых функций.
Более подробная информация читайте на странице вики.
Структура дерева AVL - это сбалансированное бинарное дерево, которое хранит коллекцию узлов. Каждый узел имеет ключ и значение, связанное с ним. Узлы отсортированы внутри дерева на основе порядка их ключей. Модификации на дерево построены так, чтобы дерево оставалось сбалансированным в любое время (всегда есть примерно одинаковое количество узлов по обе стороны от дерева).
Сбалансированные бинарные деревья имеют несколько применений. Они могут использоваться в качестве отображения (поиск значения на основе его ключа) или в качестве набора клавиш, который всегда упорядочен.
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor основан на интерфейсе utils.functor.tbinaryfunctor и используется для сравнения двух ключей.
Более подробная информация читайте на странице вики.
Хэш -таблица хранит набор значений, которые можно решить с помощью ключа. Учитывая ключ, соответствующее значение можно быстро рассмотреть.
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor основан на интерфейсе utils.functor.tbinaryfunctor и используется для сравнения двух ключей.
Более подробная информация читайте на странице вики.
В таблице Multi Hash хранится набор значений, которые можно решить с помощью ключа. Учитывая ключ, соответствующее значение можно быстро рассмотреть.
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classKeyBinaryCompareFunctor и ValueBinaryCompareFunctor основаны на интерфейсе utils.functor.tbinaryfunctor и используется для сравнения двух ключей.
Более подробная информация читайте на странице вики.
Набор хранит коллекцию значений. Каждое значение может существовать только один раз в наборе.
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classBinaryCompareFunctor основан на интерфейсе UTILS.Functor.tbinaryFunctor и используется для сравнения двух элементов.
Более подробная информация читайте на странице вики.
Тип кучи. Значения с самым низким приоритетом хранятся в верхней части кучи и будут первыми возвращенными.
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor основан на интерфейсе UTILS.Functor.tbinaryFunctor и используется для сравнения двух элементов.
Более подробная информация читайте на странице вики.
Тип кучи. Значения с наибольшим приоритетом хранятся в верхней части кучи и будут первыми возвращенными.
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor основан на интерфейсе UTILS.Functor.tbinaryFunctor и используется для сравнения двух элементов.
Более подробная информация читайте на странице вики.
Три - это структура данных, которая обеспечивает быстрые отображения от строк до значений.
uses
container.trie;
type
generic TTrie<V> = classБолее подробная информация читайте на странице вики.
Двойная окончательная очередь хранит список значений по порядку. Новые значения могут быть добавлены и удалены с любого конца очереди.
uses
container.queue;
type
generic TQueue<T> = classБолее подробная информация читайте на странице вики.
TmemoryBuffer - это полезная структура данных для хранения блоков памяти произвольного размера. Это гарантирует удаление блока памяти, когда объект уничтожен. Этот класс на основе интерфейса API wxwidgets wxmemorybuffer https://docs.wxwidgets.org/trunk/classwx_memory_buffer.html.
uses
container.memorybuffer;
type
TMemoryBuffer = classБолее подробная информация читайте на странице вики.