Esta página lista uma coleção de bibliotecas que o ajudarão na programação em C. As bibliotecas aqui são de código aberto e usadas para ajudá-lo a armazenar dados, sem precisar rolar sua própria lista vinculada, etc.
Desenvolvido por Troy D. Hanson, qualquer estrutura C pode ser armazenada em uma tabela de hash usando uthash. Apenas inclua #include "uthash.h" e adicione um UT_hash_handle à estrutura e escolha um ou mais campos em sua estrutura para atuar como a chave. Em seguida, use HASH_ADD_INT, HASH_FIND_INT e macros para armazenar, recuperar ou excluir itens da tabela de hash. Ele usa int, string e chaves binárias.
Judy é uma biblioteca C que implementa uma matriz dinâmica esparsa. Judy matrizes são declarados simplesmente com um nulo ponteiro e consome memória apenas quando preenchido. Eles podem crescer para usar toda a memória disponível, se desejar. Os principais benefícios de Judy são escalabilidade, alto desempenho e eficiência de memória. Pode ser usado para matrizes de tamanho dinâmico, matrizes associativas ou uma interface simples de usar que não requer retrabalho para expansão ou contração e pode substituir muitos estruturas de dados comuns, como matrizes, matrizes esparsas, tabelas de hash, árvores B, árvores binárias, listas lineares, skiplists, outros algoritmos de classificação e pesquisa e contagem funções.
SGLIB é uma abreviação de Simple Generic Library e consiste em um único arquivo de cabeçalho sglib.h que fornece implementação genérica dos algoritmos mais comuns para matrizes, listas, listas classificadas e árvores vermelho-pretas. A biblioteca é genérica e não define suas próprias estruturas de dados. Em vez disso, atua nas estruturas de dados definidas pelo usuário existentes por meio de uma interface genérica. Ele também não aloca ou desaloca nenhuma memória e não depende de nenhum gerenciamento de memória específico.
Todos os algoritmos são implementados na forma de macros parametrizadas pelo tipo de estrutura de dados e função comparadora (ou macro comparadora). Vários parâmetros genéricos adicionais, como o nome do campo 'próximo' para listas vinculadas, podem ser necessários para alguns algoritmos e estruturas de dados.