标准c库是否提供链表等数据结构?
标准的C库实现,特别是glibc (GNU C库)提供链表,stack等。 数据结构,还是我们必须推出自己的?
谢谢。
C标准没有提供链接列表和堆栈等数据结构。一些编译器实现可能会提供它们自己的版本,但是它们的使用在不同的编译器中是不可移植的。
所以是的,你必须自己写。
C标准没有,glibc根据来自BSD而不是POSIX的队列手册页,在<sys/queue.h>
中提供了列表,尾部队列和循环队列。
在glibc中有哈希表,二叉树和二进制search的东西。 这些是C89,C99和/或POSIX.1标准的一部分。 链接列表的一些原因是不存在的。
手册页更多信息: hsearch , tsearch和bsearch
注:其中一些devise不好。 例如: hsearch
每个进程只允许一个哈希表。 GNU编译器gcc / glibc提供允许多个散列表的可重入版本hcreate_r
, hsearch_r
和hdestroy_r
。 另请参阅堆栈溢出的如何使用hcreate_r
。
因为这样的C不提供数据结构,但是你可以使用Gnome提供的glib
Queue.h ad Tree.h也提供了一些数据结构
正如已经说过的其他答案,标准库中没有链接列表库。
我刚才写了一个供自己使用的。 您可以自由使用它或使用代码作为参考。
你可以在这里find: libllist
在POSIX(和GLibc)中有一个哈希表实现。 请参阅hcreate / hdestroy / hsearch的联机帮助页。
但是,正如所提到的,使用glib可能是最简单的方法来保存自己的重新实现基本的数据结构。