53

做标准 C 库实现,特别是glibc(GNU C 库)提供链表、堆栈等。数据结构,还是我们必须自己动手?

谢谢。

4

6 回答 6

27

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

所以是的,你必须自己写。

于 2012-12-22T09:29:41.623 回答
26

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

于 2012-12-22T09:40:42.973 回答
21

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

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

注意:其中一些设计不佳。例如:hsearch每个进程只允许一个哈希表。GNU 编译器 gcc/glibc 提供可重入版本hcreate_rhsearch_r、 ,并且hdestroy_r允许多个哈希表。另请参阅 Stack Overflow 的如何使用hcreate_r.

于 2012-12-23T15:12:27.887 回答
5

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

Queue.hTree.h还提供了一些数据结构

于 2012-12-22T09:29:59.397 回答
2

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

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

于 2012-12-23T14:03:24.367 回答
2

正如其他答案已经说明的那样,标准库中没有链表库。

不久前我写了一个供我自己使用。您可以自由使用它或使用代码作为参考。

你可以在这里找到它:libllist

于 2015-05-29T18:04:58.743 回答