2015-05-15 4 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

Извините за глупый вопрос. Он решен –

 Смежные вопросы

  • Нет связанных вопросов^_^