2015-05-15 40 views
0

這段代碼是我爲我的學校任務所做的二叉搜索樹。請求會員的東西不是結構或聯盟,但它的結構

#include "binary_tree.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#define MAXLEN 10 


Node* create_tree() { 

return NULL; 

} 

void insert_tree(Node** root, char* nname, char* number) { 


    if (*root==NULL){ 
     Node* node = (Node *)malloc(sizeof(Node)); 

     strncpy(node->name , nname, MAXLEN); 
     strncpy(node->number , number, MAXLEN); 

     node->left = node->right = NULL; 
     *root = node; 
     return; 

    } 


    if (strncmp(*root->name, nname, MAXLEN)) { 

     insert_tree(&(*root)->left, nname, number); 

    } else { 

     insert_tree(&(*root)->right, nname, number); 
    } 
} 

void preorder(Node* node, int level){ 
    int i; 
    if (node==NULL){ 
     //printf("null\n"); 
     return; 

    } 
    for (i = 0; i<level; i++) { 
     printf(" "); 
    } 
    printf("%s %d\n", node->name, level); 

    preorder(node->left, level + 1); 
    preorder(node->right, level + 1); 

} 

這是我的完整代碼。 嗯,我不刪碼的必要位,但多數民衆贊成所有我需要知道對不對..

typedef struct t_node { 
    char name[MAXLEN + 1]; 
    char number[MAXLEN + 1]; 
    struct t_node *left; 
    struct t_node *right; 

} Node; 

,這是我使用的節點類型。

在insert_tree處,插入一個節點即可。

但是當我使用strncmp時,它會得到錯誤。 「請求會員在某些不是結構或聯盟」

是不是根節點結構?

我不明白爲什麼我得到的錯誤..

有人可以幫我嗎?

我已經浪費了大約4個小時只來解決這個問題..

對不起我的英文不好,由於國籍

回答

3

operator precedence,其中->是有過*優先。您應該使用(*root)->name作爲您的strncmp()呼叫的參數。

+0

對不起,有一個愚蠢的問題。它解決了 –

相關問題