2014-03-03 30 views
4

我試圖在我的一個學術項目中使用GNU libavlhttp://adtinfo.org/)。我需要一個關於如何使用庫提供的BST(二叉搜索樹)實現的簡單教程。我需要做的是根據值使用BST排序(鍵,值)對(大約30000個字符串和頻率)。雖然這個庫是有據可查的,但它並沒有給我的問題提供任何直接的前言,我沒有時間閱讀所有的文檔和測試代碼。我想知道是否有更快的方法來進行分類。如何使用libavl?

回答

3

你試過這個嗎?

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

我打算接受這個答案,儘管對此的期望很長。 :D – Madushan

+1

@Madushan你甚至看過這個例子嗎?它不僅僅只包含一個例子(僅使用AVL樹,而不是GNU libavl提供的任何其他類型的二叉樹),但我甚至不能說出這個github項目與GNU項目有何關係! – Michael

+0

答案中的鏈接不起作用。存儲庫名稱已更改爲'avl',因此現在正確的鏈接將是:https://github.com/yapbreak/avl/blob/master/example/example.c – senya

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源文件包含到您的項目中。