如何使用libavl?

问题描述 投票:4回答:2

我正在尝试将GNU libavlhttp://adtinfo.org/)用于我的一个学术项目。我需要一个关于如何使用库提供的BST(二进制搜索树)实现的简单教程。我需要做的是根据值使用BST对(键,值)对(大约30000个字符串和那些频率)进行排序。尽管该库已有详细记录,但它没有给出我的问题的任何直接前言答案,我没有时间阅读所有文档和测试代码。我想知道是否有更快的方法来进行排序。

c sorting binary-search-tree gnu
2个回答
2
投票

你试过这个吗?

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));

0
投票

接受的答案是错误的,因为它指向不同的库而不是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源文件包含到项目中。

© www.soinside.com 2019 - 2024. All rights reserved.