Чи є бібліотеки C з відкритим кодом із загальними структурами даних? [зачинено]


111

Я шукаю бібліотеку С із поширеними структурами даних для багаторазового використання, як-от зв'язані списки, хеш-таблиці тощо. Щось на зразок джерела, розповсюдженого з Mastering Algorithms with C (Paperback) від Kyle Loudon .


Інші сайти краще підходять для подібних питань slant.co/improve/topics/19233
ideaman42

Відповіді:


57

BSD queue.h має:

  • SLIST = окремо пов'язаний список
  • СПИСОК = подвійний список
  • SIMPLEQ = поодиноко пов'язана черга
  • TAILQ = подвійна черга

BSD tree.h має:

  • РБ - червоно-чорне дерево
  • SPLAY - грі дерево

Докладні відомості див. У черзі (3) та дереві (3) . Мені вони дуже подобаються, бо вони чисті макроси C без залежностей (навіть не libc). Крім того, з ліцензією BSD вам не доведеться турбуватися про будь-які обмеження компанії з / у GPL.


36

Gnome пропонує чудову бібліотеку для цього під назвою Glib , а також багато корисних структур даних та інших утиліт.


30

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

Він поширюється як вихідний код. Цей список є зі списку його модулів , який включає TON інших речей. Один цікавий - "c-stack: обробка переповнення стека, що викликає вихід програми".

  • список
  • список масивів
  • carray-list
  • пов'язаний список
  • avltree-list
  • rbtree-список
  • пов'язаний гаш-список
  • avltreehash-list
  • rbtreehash-список
  • підпис (Тип даних послідовного списку, підкріплений іншим списком.)
  • oset (абстрактний упорядкований набір.)
  • масив-oset
  • авльтрі-осет
  • rbtree-oset

Майте на увазі, що ця опція має ліцензію GPL, і тому її можна використовувати легально лише в програмному забезпеченні, що має ліцензію GPL.
Ной Ендрюс

19

SGLIB - це відмінна загальна бібліотека структур даних. На даний момент бібліотека пропонує загальні реалізації для:
сортування масивів
зв'язаних списків,
відсортованих зв'язаних списків
подвійних зв'язаних списків
червоно-чорних дерев
хешованих контейнерів

Це дуже швидко, швидше, ніж гліб. Він натхненний бібліотекою стандартних шаблонів Завантажте тут

Ще одне рішення - привабливе програмне забезпечення Chaos . 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
Роб

Здається, обидві ці мочки перейшли AWOL.
Майкл Фукаракіс




Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.