简体   繁体   English

请求成员而不是结构或联合,但这是结构

[英]request for member in something not a structure or union, but it's a struct

this code is a binary search tree I'm doing for my school assignment. 该代码是我为学校分配的二进制搜索树。

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

}

This is my Full code. 这是我的完整代码。 Well I deleted not necessary bits of codes, but thats all I need right know.. 好吧,我删除了不必要的代码,但这就是我所需要的全部。

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

} Node;

and this is the Node type I'm using. 这是我正在使用的Node类型。

at the insert_tree, inserting one node is OK. 在insert_tree中,插入一个节点是可以的。

but when I use strncmp, it get errors. 但是当我使用strncmp时,会出现错误。

"Request for member in something not a structure or union" “要求加入非结构或联合的成员”

isn't root a Node Struct? 不是根结点结构?

I don't get why I get errors. 我不明白为什么我会出错。

See operator precedence , where -> is having precedence over * . 请参阅运算符优先级 ,其中->优先于* You should use (*root)->name as argument to your strncmp() call. 您应该使用(*root)->name作为strncmp()调用的参数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM