Поддерживает ли стандартная библиотека c связанный список и т.д. Структуры данных?
Имеют ли стандартные реализации библиотеки C, особенно glibc (библиотека GNU C), предоставляют связанные списки, stack et al. структуры данных, или нам нужно сворачивать свои собственные?
Спасибо.
Ответ 1
Стандарт C не предоставляет структуры данных, такие как связанный список и стек. Некоторые реализации компилятора могут предоставлять свои собственные версии, но их использование будет не переносимым для разных компиляторов.
Итак, вы должны написать свой собственный.
Ответ 2
В стандарте C нет, glibc, тем не менее, предоставляет списки, хвостовые очереди и круговые очереди в <sys/queue.h> в соответствии с queue man-страницами, которые поступают из BSD, а не POSIX.
Ответ 3
В glibc есть хеш-таблицы, бинарные деревья и бинарные файлы поиска.
Это часть стандартов C89, C99 и/или POSIX.1.
В некоторых случаях связанный список отсутствует.
Примечание: Некоторые из них имеют плохую конструкцию. Например: hsearch разрешает только одну хеш-таблицу для каждого процесса. Компилятор GNU, gcc/glibc, предоставляет реентерабельные версии hcreate_r, hsearch_r и hdestroy_r, которые позволяют использовать несколько хеш-таблиц. См. Также Переполнение стека Как использовать hcreate_r.
Ответ 4
Поскольку C не предоставляет структуры данных, но вы можете использовать glib, предоставленный Gnome
Queue.h ad Tree.h также предоставляет вы некоторые структуры данных
Ответ 5
Как уже было сказано, в стандартной библиотеке нет библиотеки связанных списков.
Я написал один для своего собственного использования некоторое время назад. Вы можете свободно использовать его или использовать код в качестве ссылки.