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

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

Ответ 1

BSD queue.h имеет:

  • SLIST = отдельный список
  • LIST = дважды связанный список
  • SIMPLEQ = одиночно связанная очередь
  • TAILQ = дважды связанная очередь

BSD tree.h имеет:

  • RB - красно-черное дерево
  • SPLAY - дерево splay

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

Ответ 2

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

Ответ 3

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

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

  • список
  • массив-список
  • CARRAY-лист
  • связного списка
  • avltree-лист
  • rbtree-лист
  • linkedhash-лист
  • avltreehash-лист
  • rbtreehash-лист
  • sublist (Тип данных последовательного списка, поддерживаемый другим списком.)
  • oset (Абстрактный упорядоченный набор.)
  • массив OSET
  • avltree-OSET
  • rbtree-OSET

Ответ 4

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

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

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

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

Ответ 6

Время автономной работы Apache.