2015-11-12 28 views
0

創建一個基本的二叉搜索樹,利用鏈表並且還試圖向功能中輸入'數據'(因爲它需要它)。 但是,即使我正在使用它,我仍然收到「未使用的變量」錯誤?試圖在C中創建一個基本的二叉搜索樹,但又混淆了'未使用的變量'?

這是因爲我沒有返回'數據'嗎?如果是這樣,我應該如何在功能本身應該創建一個新節點?

謝謝!

/* Binary search trees in linkedlists! 

*/ 

#include <stdio.h> 
#include <stdlib.h> 

    typedef struct tnode Tnode; //Tree node 

    struct tnode { 
    int data; 
    Tnode *left; //for smaller vals 
    Tnode *right; //for larger vals 
    }; 

Tnode * makeTnode(int data); 

int main(int argc, char*argv[]){ 
    int data = 9; 

    struct tnode new_node; 

    Tnode * makeTnode(int data); 

    printf("new_node's data is %d\n", new_node.data); 

return 0; 

} 

Tnode * makeTnode(int data){ 

    Tnode *new_node =(Tnode *)malloc(sizeof(Tnode)); 

    if(new_node == NULL) { 
    fprintf(stderr, "Error: memory allocation failed\n"); 
    exit(1); 
    } 

    new_node->data = data; 
    new_node->left = NULL; 
    new_node->right = NULL; 

    return(new_node); 
} 
+0

哪個變量據說未被使用? – immibis

回答

0

您在main()中的函數調用makeTnode不正確,任何返回結果都將被忽略。看起來你想要做的就是將結果保存爲new_node。因此,改變你的主要功能是:

int main(int argc, char*argv[]){ 
    int data = 9; 
    Tnode * new_node = makeTnode(data); 
    printf("new_node's data is %d\n", new_node.data); 
    free(new_node); //You should also clean up after yourself. 
    return 0; 
} 
0
Tnode * makeTnode(int data); 

是一個函數聲明(這裏無用的一個,因爲你已經聲明瞭函數)

如果要真正地調用它,使用方法:

new_node = makeTnode(data); 

,並確保new_node實際上是一個Tnode*(不是Tnode)。