我正在尝试将GNU libavl
(http://adtinfo.org/)用于我的一个学术项目。我需要一个关于如何使用库提供的BST(二进制搜索树)实现的简单教程。我需要做的是根据值使用BST对(键,值)对(大约30000个字符串和那些频率)进行排序。尽管该库已有详细记录,但它没有给出我的问题的任何直接前言答案,我没有时间阅读所有文档和测试代码。我想知道是否有更快的方法来进行排序。
你试过这个吗?
https://github.com/yapbreak/avl/blob/master/example/example.c
片段:
int main(int argc, char **argv)
{
tree *avl_tree = NULL;
struct data tmp;
unsigned result;
(void) argc;
(void) argv;
// Initialize a new tree with our three previously defined
// functions to store data structure.
avl_tree = init_dictionnary(data_cmp, data_print, data_delete, data_copy);
tmp.key = 42;
tmp.value = 4242;
// Add element {42, 4242} in our tree.
result = insert_elmt(avl_tree, &tmp, sizeof(struct data));
接受的答案是错误的,因为它指向不同的库而不是GNU libavl。它也没有回答原始查询。
我需要一个简单的教程
我不知道这个库的任何教程。你也这么说
我没有时间阅读所有文档和测试代码。
但是,虽然没有更好的选择,但我认为阅读测试对于有兴趣了解GNU libavl的人来说是最好的建议。接受的答案甚至与我即将撰写的内容相关。
GNU libavl包含可以作为用法示例读取的测试。但由于该库是用TexiWEB语言编写的,为了获得C源代码,您必须首先编译原始源代码。
克隆源代码:
$ git clone git://git.savannah.gnu.org/avl.git
然后在avl
目录中运行:
$ make programs
编译之后,您将看到C源代码和已编译的二进制文件。
现在您可以阅读测试并从那里了解如何使用该库。测试源有-test.c
后缀。例如,AVL树的测试在avl-test.c
文件中。
另请注意,GNU libavl不能用作共享库,因此您必须将C源文件包含到项目中。