Существуют ли какие-либо библиотеки C с открытым исходным кодом с общими структурами данных? [закрыто]

111

Я ищу библиотеку C с общими структурами данных многократного использования, такими как связанные списки, хеш-таблицы и т. Д. Что-то вроде источника, распространяемого с помощью алгоритмов освоения с C (мягкая обложка) от Кайла Лаудона .

Васил
источник
Другие сайты лучше подходят для ответов на подобные
ideasman42

Ответы:

57

BSD queue.h имеет:

  • SLIST = односвязный список
  • СПИСОК = двусвязный список
  • SIMPLEQ = односвязная очередь
  • TAILQ = двусвязная очередь

BSD tree.h имеет:

  • РБ - красно-черное дерево
  • SPLAY - растопыренное дерево

См. Подробности в справочных страницах queue (3) и tree (3) . Мне они очень нравятся, потому что это чистые макросы C без зависимостей (даже не libc). Кроме того, с лицензией BSD вам не нужно беспокоиться о каких-либо ограничениях компании с GPL.

HUAGHAGUAH
источник
36

Gnome предоставляет для этого отличную библиотеку под названием Glib с множеством полезных структур данных и другими утилитами.

Эмиль Х
источник
30

gnulib , библиотека переносимости GNU .

Он распространяется как исходный код. Этот список взят из его списка модулей , который включает в себя ТОННУ других вещей. Один интересный - «c-stack: обработка переполнения стека, вызывающая выход из программы».

  • список
  • список-массив
  • список
  • связанный список
  • avltree-list
  • rbtree-list
  • связанный хэш-список
  • avltreehash-list
  • rbtreehash-list
  • подсписок (тип данных последовательного списка, подкрепленный другим списком.)
  • oset (Абстрактное упорядоченное множество.)
  • массив-осет
  • Avltree-Oset
  • rbtree-oset
Ян Келлинг
источник
Имейте в виду, что этот вариант под лицензией GPL и, следовательно, может использоваться на законных основаниях только в программном обеспечении под лицензией GPL.
Ной Эндрюс
19

SGLIB - отличная библиотека общих структур данных. В настоящее время библиотека предоставляет общие реализации для:
сортировки массивов,
связанных списков,
сортированных связанных списков,
двойных связанных списков,
красно-черных деревьев,
хешированных контейнеров.

Это очень быстро, быстрее, чем бойко. Он вдохновлен стандартной библиотекой шаблонов. Скачать здесь

Еще одно решение - программа «Привлекательный хаос» . Библиотека макросов C:
kbtree.h: эффективная библиотека B-дерева в C.
khash.h: быстрая и легкая библиотека хеш-таблиц в C.
kvec.h: простой контейнер векторов в C.

Программное обеспечение Sglib и Привлекательный Хаос - это библиотека макросов C. Использование void * для реализации универсальных контейнеров в C может быть неэффективным. Макросы C имитируют шаблон C ++ и столь же эффективны, как и шаблон C ++

масть
источник
Хорошие указатели - я никогда раньше не слышал о SGLIB.
Майкл Берр,
Ссылка "скачать" для проекта SGLIB не работает. Похоже, что больше не существует ...: /
luis.espinal
@ luis.espinal Его все еще можно скачать с freecode.com/projects/sglib
Роб,
Кажется, обе эти библиотеки ушли в самоволку.
Майкл Фукаракис
0

CLIB

Авинаш
источник
Это указывает на страницу, где говорится, что библиотека переместилась на code.google.com/p/clibutils .
stakx - больше не участвует
А теперь он выглядит так: github.com/davinash/cstl Однако он не обновлялся с 2012 года.
domen