Existe alguma biblioteca C de código aberto com estruturas de dados comuns? [fechadas]

111

Estou procurando uma biblioteca C com estruturas de dados reutilizáveis ​​comuns, como listas vinculadas, tabelas de hash etc. Algo como a fonte distribuída com Mastering Algorithms with C (Paperback) por Kyle Loudon .

Vasil
fonte
Outros sites são mais adequados para esse tipo de pergunta slant.co/improve/topics/19233
ideasman42

Respostas:

57

O arquivo BSD queue.h tem:

  • SLIST = lista unicamente vinculada
  • LIST = lista duplamente ligada
  • SIMPLEQ = fila unida individualmente
  • TAILQ = fila duplamente vinculada

BSD tree.h tem:

  • RB - árvore vermelho-preto
  • SPLAY - árvore splay

Consulte as páginas do manual queue (3) e tree (3) para obter detalhes. Eu realmente gosto deles porque são macros C puras sem dependências (nem mesmo libc). Além disso, com a licença BSD, você não precisa se preocupar com as restrições da empresa com GPL.

HUAGHAGUAH
fonte
36

O Gnome fornece uma excelente biblioteca para isso, chamada Glib , com muitas estruturas de dados úteis e outros utilitários também.

Emil H
fonte
30

gnulib , a biblioteca de portabilidade gnu.

É distribuído como código-fonte. Esta lista é de sua lista de módulos , que inclui uma tonelada de outras coisas. Um interessante é "c-stack: manipulação de estouro de pilha, causando saída do programa."

  • Lista
  • lista-matriz
  • lista de carrinhos
  • lista ligada
  • avltree-list
  • rbtree-list
  • lista de hash vinculada
  • avltreehash-list
  • rbtreehash-list
  • sublista (tipo de dados de lista sequencial apoiado por outra lista.)
  • oset (conjunto ordenado abstrato.)
  • array-oset
  • avltree-oset
  • rbtree-oset
Ian Kelling
fonte
Lembre-se de que esta opção é licenciada pela GPL e, portanto, só pode ser usada legalmente em software licenciado pela GPL.
Noah Andrews
19

SGLIB é uma excelente biblioteca genérica de estruturas de dados. A biblioteca atualmente fornece implementações genéricas para:
ordenar matrizes
listas
vinculadas ordenadas listas vinculadas listas
duplas vinculadas
árvores vermelho-preto
contêineres com hash

É muito rápido, mais rápido do que loquaz. É inspirado na Biblioteca de modelos padrão. Baixe aqui

Outra solução é o software Attractive Chaos . Biblioteca de macros C:
kbtree.h : biblioteca eficiente de árvore B em C.
khash.h: biblioteca de tabela hash rápida e leve em C.
kvec.h: contêiner de vetor simples em C.

Os softwares Sglib e Attractive Chaos são uma biblioteca de macros C. Usar void * para implementar contêineres genéricos em C pode ser ineficiente. As macros C imitam o modelo C ++ e são tão eficientes quanto o modelo C ++

Lear
fonte
Boas dicas - eu nunca tinha ouvido falar do SGLIB antes.
Michael Burr
O link "download" para o projeto SGLIB está quebrado. Parece que vai
morrer
@ luis.espinal Ele ainda pode ser baixado de freecode.com/projects/sglib
Rob
Parece que ambas as bibliotecas desapareceram.
Michael Foukarakis
3

O Apache Portable Runtime.

Jaap
fonte
3
Encontrado aqui: apr.apache.org
n8gray