LibPASC-algoritmos é a Biblioteca Delphi e objeto Pascal de estruturas e algoritmos comuns de dados. A biblioteca é baseada no repositório C-algoritmos e é um conjunto de contêineres adaptados para a linguagem Pascal e o sistema de modelos disponíveis nele.
Biblioteca é testada para
Obtenha as fontes e adicione o diretório de origem ao caminho de pesquisa do projeto. Para FPC, adicione o diretório de origem ao arquivo fpc.cfg .
Clone o git clone https://github.com/isemenkov/libpasc-algorithms .
Adicione a unidade que você deseja usar à cláusula uses .
Uma estrutura de teste consiste nos seguintes ingredientes:
unit-tests .Tarraylist são matrizes genéricas de t que aumentam automaticamente o tamanho.
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classBinaryCompareFunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar dois itens de matriz. Necessário para as funções de classificação e pesquisa.
Mais detalhes lidos na página wiki.
O Tmultiarray é uma matriz genérica de T de T que aumenta automaticamente o tamanho.
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classBinaryCompareFunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar dois itens de matriz. Necessário para as funções de classificação e pesquisa.
Mais detalhes lidos na página wiki.
O TsortedArray é uma matriz de redimensionamento automaticamente que armazena seus elementos em ordem classificada. Functor definido pelo usuário determine a ordem de classificação. Todas as operações em um TsortedArray mantêm a propriedade classificada. A maioria das operações é realizada no tempo O (n), mas a pesquisa pode ser feita no pior dos casos O (log n).
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classBinaryCompareFunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar dois itens de matriz. Necessário para a função de pesquisa.
Mais detalhes lidos na página wiki.
Uma lista duplamente ligada armazena uma coleção de valores. Cada entrada na lista contém um link para a próxima entrada e a entrada anterior. Portanto, é possível iterar sobre entradas na lista em qualquer direção.
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classBinaryCompareFunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar dois itens de lista. Necessário para as funções de classificação e pesquisa.
Mais detalhes lidos na página wiki.
A estrutura da árvore AVL é uma árvore binária equilibrada que armazena uma coleção de nós. Cada nó tem uma chave e um valor associado a ele. Os nós são classificados dentro da árvore com base na ordem de suas chaves. As modificações na árvore são construídas de modo que a árvore permaneça equilibrada o tempo todo (sempre há números aproximadamente iguais de nós em ambos os lados da árvore).
Árvores binárias equilibradas têm vários usos. Eles podem ser usados como um mapeamento (buscando um valor com base em sua chave) ou como um conjunto de chaves que sempre são ordenadas.
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classKeybinarycomparefunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar duas teclas.
Mais detalhes lidos na página wiki.
Uma tabela de hash armazena um conjunto de valores que podem ser abordados por uma chave. Dada a chave, o valor correspondente pode ser analisado rapidamente.
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classKeybinarycomparefunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar duas teclas.
Mais detalhes lidos na página wiki.
Uma tabela de hash multi armazena um conjunto de valores que podem ser abordados por uma chave. Dada a chave, o valor correspondente pode ser analisado rapidamente.
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classKeyBinaryCompareFunctor e ValueBinaryCompareFunctor são baseados na interface utils.functor.tbinaryfunctor e usados para comparar duas teclas.
Mais detalhes lidos na página wiki.
Um conjunto armazena uma coleção de valores. Cada valor só pode existir uma vez no conjunto.
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classBinaryCompareFunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar dois itens.
Mais detalhes lidos na página wiki.
Tipo de pilha. Os valores com a menor prioridade são armazenados na parte superior da pilha e serão os primeiros retornados.
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar dois itens.
Mais detalhes lidos na página wiki.
Tipo de pilha. Os valores com a maior prioridade são armazenados na parte superior da pilha e serão os primeiros retornados.
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor é baseado na interface utils.functor.tbinaryfunctor e usado para comparar dois itens.
Mais detalhes lidos na página wiki.
Um trie é uma estrutura de dados que fornece mapeamentos rápidos de strings para valores.
uses
container.trie;
type
generic TTrie<V> = classMais detalhes lidos na página wiki.
Uma fila de ponta dupla armazena uma lista de valores em ordem. Novos valores podem ser adicionados e removidos de cada extremidade da fila.
uses
container.queue;
type
generic TQueue<T> = classMais detalhes lidos na página wiki.
O TMemoryBuffer é uma estrutura de dados útil para armazenar blocos de memória de tamanho arbitrário. É garantia a exclusão do bloco de memória quando o objeto é destruído. Esta classe baseada na interface da API WXWidgets WXMemoryBuffer https://docs.wxwidgets.org/trunk/classwx_memory_buffer.html.
uses
container.memorybuffer;
type
TMemoryBuffer = classMais detalhes lidos na página wiki.