嗨朋友, 我在c。
中遇到指针转换问题代码
结构:
struct node {
int data;
char color[5];
struct node *p,*left,*right;
}*temp,*root,*T2,*ptemp,*g,*u,*n,*x,*y,*z,*disp;
功能:
int uncle(struct node *temp)
{ if(temp->p->p!=NULL)
{ if(temp->p->p->left==temp->p) return temp->p->p->right;
else return temp->p->p->left;
}
return 0;
}
指针分配位置:
int insert_case3(struct node *n)
{ struct node *u=uncle(n);
if (u!=NULL && strcmp(u->color,"Red")==0)
{ strcpy(n->p->color,"Black");
strcpy(u->color,"Black");
g=grandparent(n);
strcpy(g->color,"Red");
insert_case1(g);
printf("Insert case 3 Success");
}
else { insert_case4(n);
printf("Insert case 3 fail");
}
return 0;
}
我不知道如何解决这个错误☺️ 感谢您抽出宝贵时间阅读这个问题!
答案 0 :(得分:2)
因为您从函数int
返回struct node *
而不是uncle
。
int uncle(struct node *temp)
需要
struct node *uncle(struct node *temp)
由于0
的魔力,你可以从这些中返回0
,但NULL
更为传统。
将相同的原则应用于其他功能。
此外,您的color
成员对"Black"
+终结者来说还不够大。它需要至少6,如果你想要“紫色”或“黄色”,可能更多。