标准c库是否提供链表等数据结构?

时间:2012-12-22 09:27:02

标签: c gcc data-structures glibc

标准C库实现,尤其是 glibc (GNU C库)提供链表,stack等。数据结构,还是我们必须自己动手?

感谢。

6 个答案:

答案 0 :(得分:22)

C标准没有,glibc根据来自BSD而不是POSIX的queue手册页在<sys/queue.h>中提供列表,尾部队列和循环队列。

答案 1 :(得分:20)

glibc中有哈希表,二叉树和二进制搜索。 这些是C89,C99和/或POSIX.1标准的一部分。 有些原因链表并不存在。

来自手册页的更多信息:hsearchtsearchbsearch

注意:其中一些设计不好。例如:hsearch每个进程只允许一个哈希表。 GNU编译器gcc / glibc提供允许多个哈希表的可重入版本hcreate_r, hsearch_r, and hdestroy_r。另请参阅Stack Overflow的How to use hcreate_r

答案 2 :(得分:18)

C标准不提供链接列表和堆栈等数据结构。某些编译器实现可能提供自己的版本,但它们的使用在不同的编译器中是不可移植的。

是的,你必须自己编写。

答案 3 :(得分:5)

因此C不提供数据结构,但您可以使用Gnome提供的glib

Queue.h ad Tree.h还为您提供了一些数据结构

答案 4 :(得分:2)

POSIX(和GLibc)中有一个哈希表实现;请参阅hcreate / hdestroy / hsearch的联机帮助页。

但是,如上所述,使用glib可能是避免重新实现基本数据结构的最简单方法。

答案 5 :(得分:2)

正如其他答案所述,标准库中没有链表库。

我刚刚写了一篇供我自己使用的。您可以自由使用它或使用代码作为参考。

您可以在此处找到它:libllist