标准C库实现,尤其是 glibc (GNU C库)提供链表,stack等。数据结构,还是我们必须自己动手?
感谢。
答案 0 :(得分:22)
C标准没有,glibc根据来自BSD而不是POSIX的queue手册页在<sys/queue.h>
中提供列表,尾部队列和循环队列。
答案 1 :(得分:20)
glibc中有哈希表,二叉树和二进制搜索。 这些是C89,C99和/或POSIX.1标准的一部分。 有些原因链表并不存在。
来自手册页的更多信息:hsearch,tsearch和bsearch
注意:其中一些设计不好。例如:hsearch
每个进程只允许一个哈希表。 GNU编译器gcc / glibc提供允许多个哈希表的可重入版本hcreate_r
, hsearch_r
, and hdestroy_r
。另请参阅Stack Overflow的How to use hcreate_r
。
答案 2 :(得分:18)
C标准不提供链接列表和堆栈等数据结构。某些编译器实现可能提供自己的版本,但它们的使用在不同的编译器中是不可移植的。
是的,你必须自己编写。
答案 3 :(得分:5)
答案 4 :(得分:2)
POSIX(和GLibc)中有一个哈希表实现;请参阅hcreate / hdestroy / hsearch的联机帮助页。
但是,如上所述,使用glib可能是避免重新实现基本数据结构的最简单方法。
答案 5 :(得分:2)