做标准 C 库实现,特别是glibc(GNU C 库)提供链表、堆栈等。数据结构,还是我们必须自己动手?
谢谢。
C 标准不提供链表和堆栈之类的数据结构。一些编译器实现可能会提供自己的版本,但它们的使用在不同的编译器之间是不可移植的。
所以是的,你必须自己写。
C 标准没有,但 glibc<sys/queue.h>
根据来自 BSD 而不是 POSIX的队列手册页提供了列表、尾队列和循环队列。
glibc 中有哈希表、二叉树和二叉搜索的东西。这些是 C89、C99 和/或 POSIX.1 标准的一部分。某些原因链表不存在。
来自手册页的更多信息:hsearch、tsearch和bsearch
注意:其中一些设计不佳。例如:hsearch
每个进程只允许一个哈希表。GNU 编译器 gcc/glibc 提供可重入版本hcreate_r
、hsearch_r
、 ,并且hdestroy_r
允许多个哈希表。另请参阅 Stack Overflow 的如何使用hcreate_r
.
POSIX(和 GLibc)中有一个哈希表实现;请参阅 hcreate/hdestroy/hsearch 的手册页。
但是,如前所述,使用 glib 可能是避免重新实现基本数据结构的最简单方法。