Libpasc-Algorithms es la biblioteca Pascal de Delphi y Object de estructuras y algoritmos de datos comunes. La biblioteca se basa en el repositorio de los algoritmos C y es un conjunto de contenedores adaptados para el lenguaje Pascal y el sistema de plantilla disponible en él.
La biblioteca se prueba para
Obtenga las fuentes y agregue el directorio de origen a la ruta de búsqueda del proyecto. Para FPC, agregue el directorio de origen al archivo fpc.cfg .
Clone El repositorio git clone https://github.com/isemenkov/libpasc-algorithms .
Agregue la unidad que desea usar a la cláusula uses .
Un marco de prueba consta de los siguientes ingredientes:
unit-tests .TarrayList son matrices genéricas de T que aumentan automáticamente de tamaño.
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classBinaryComPareFuntor se basa en utils.functor.tbinaryFunctor Interface y se usa para comparar dos elementos de matriz. Necesario para las funciones de clasificación y búsqueda.
Más detalles leídos en la página Wiki.
Tmultiarray es una matriz genérica de matriz de t que aumenta automáticamente de tamaño.
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classBinaryComPareFuntor se basa en utils.functor.tbinaryFunctor Interface y se usa para comparar dos elementos de matriz. Necesario para las funciones de clasificación y búsqueda.
Más detalles leídos en la página Wiki.
TsortedArray es una matriz de cambio de tamaño automáticamente que almacena sus elementos en orden ordenado. El functor definido por el usuario determina el orden de clasificación. Todas las operaciones en un TsortedArray mantienen la propiedad ordenada. La mayoría de las operaciones se realizan en el tiempo o (n), pero la búsqueda se puede hacer en O (log n) en el peor de los casos.
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classBinaryComPareFuntor se basa en utils.functor.tbinaryFunctor Interface y se usa para comparar dos elementos de matriz. Necesario para la función de búsqueda.
Más detalles leídos en la página Wiki.
Una lista doblemente vinculada almacena una colección de valores. Cada entrada en la lista contiene un enlace a la siguiente entrada y la entrada anterior. Por lo tanto, es posible iterar sobre las entradas en la lista en cualquier dirección.
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classBinaryComPareFuntor se basa en utils.functor.tbinaryFunctor Interface y se usa para comparar dos elementos de la lista. Necesario para las funciones de clasificación y búsqueda.
Más detalles leídos en la página Wiki.
La estructura del árbol AVL es un árbol binario equilibrado que almacena una colección de nodos. Cada nodo tiene una clave y un valor asociado con él. Los nodos se clasifican dentro del árbol en función del orden de sus llaves. Las modificaciones al árbol se construyen de tal manera que el árbol permanezca equilibrado en todo momento (siempre hay números aproximadamente iguales de nodos a cada lado del árbol).
Los árboles binarios equilibrados tienen varios usos. Se pueden usar como un mapeo (que busca un valor basado en su clave), o como un conjunto de claves que siempre se solicita.
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classKeyBinaryComPareFunctor se basa en utils.funtor.tbinaryFunctor Interface y se usa para comparar dos claves.
Más detalles leídos en la página Wiki.
Una tabla hash almacena un conjunto de valores que pueden ser abordados por una clave. Dada la clave, el valor correspondiente se puede buscar rápidamente.
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classKeyBinaryComPareFunctor se basa en utils.funtor.tbinaryFunctor Interface y se usa para comparar dos claves.
Más detalles leídos en la página Wiki.
Una tabla multi hash almacena un conjunto de valores que pueden abordarse mediante una clave. Dada la clave, el valor correspondiente se puede buscar rápidamente.
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classKeyBinaryComPareFuntor y ValueBinaryComPareFunctor se basan en utils.functor.tbinaryFunctor Interface y se usa para comparar dos claves.
Más detalles leídos en la página Wiki.
Un set almacena una colección de valores. Cada valor solo puede existir una vez en el conjunto.
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classBinaryComPareFuntor se basa en utils.functor.tbinaryFunctor Interface y se usa para comparar dos elementos.
Más detalles leídos en la página Wiki.
Tipo de montón. Los valores con la prioridad más baja se almacenan en la parte superior del montón y serán los primeros devueltos.
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classBinaryComPareFuntor se basa en utils.functor.tbinaryFunctor Interface y se usa para comparar dos elementos.
Más detalles leídos en la página Wiki.
Tipo de montón. Los valores con la mayor prioridad se almacenan en la parte superior del montón y serán los primeros devueltos.
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classBinaryComPareFuntor se basa en utils.functor.tbinaryFunctor Interface y se usa para comparar dos elementos.
Más detalles leídos en la página Wiki.
Un trie es una estructura de datos que proporciona mapeaciones rápidas desde cadenas hasta valores.
uses
container.trie;
type
generic TTrie<V> = classMás detalles leídos en la página Wiki.
Una cola de doble final almacena una lista de valores en orden. Se pueden agregar y eliminar nuevos valores de cada extremo de la cola.
uses
container.queue;
type
generic TQueue<T> = classMás detalles leídos en la página Wiki.
TMemoryBuffer es una estructura de datos útil para almacenar bloques de memoria de tamaño arbitrario. Se garantiza la eliminación del bloque de memoria cuando se destruye el objeto. Esta clase basada en WXWidgets WXMemoryBuffer Interface API https://docs.wxwidgets.org/trunk/classwx_memory_buffer.html.
uses
container.memorybuffer;
type
TMemoryBuffer = classMás detalles leídos en la página Wiki.