这段代码是我为学校作业做的二叉搜索树。
#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 时,它会出错。
"Request for member in something not a structure or union"
root 不是一个节点结构吗?
我不明白为什么会出现错误。
最佳答案
参见 operator precedence ,其中 ->
优先于 *
。您应该使用 (*root)->name
作为您的 strncmp()
调用的参数。
关于c - 请求成员不是结构或 union ,而是结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30260088/