问题描述
我一直被这个错误困扰,找不到任何解决我的问题的方法。我有一个 insert_bts_node 函数(下面的代码)。
enter code hereBSTNodePtr insert_bst_node(BSTNodePtr self,String *item) {
/* check if found location,then insert */
if (self == NULL) {
self = malloc(sizeof * self);
self->course = item;
//item = strcpy(self->course,item);
self->left = self->right = NULL;
create_list(self->course);
//self->course = create_list();
}
/**
* else if (item < self->course) {
self->left = insert_bst_node(self->left,item);
}
*/
else if (strcmp(item,self->course)<0){
self->left = insert_bst_node(self->left,item);
}
else if (strcmp(item,self->course) >0){
self->right = insert_bst_node(self->right,item);
}
return self;
}
错误在 self->course = item 上弹出。 我使用的定义如下。
typedef char* String;
typedef struct Course {
String name;
StudentList students;
} Course;
typedef struct bstNode {
Course course;
struct bstNode* left;
struct bstNode* right;
} *BSTNodePtr;
解决方法
item
是 String*
类型,self->course
是 struct Course
类型,正如错误消息所说。
如果您想将项目分配给课程名称(String
类型),您应该执行 self->course.name = *item