c中的非便携式指针转换(RB树程序)

时间:2018-02-06 00:17:54

标签: c turbo-c

嗨朋友, 我在c。

中遇到指针转换问题

这是我的屏幕截图 编译时出错 enter image description here

功能代码 enter image description here

代码

结构:

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; 
}

我不知道如何解决这个错误☺️ 感谢您抽出宝贵时间阅读这个问题!

1 个答案:

答案 0 :(得分:2)

因为您从函数int返回struct node *而不是uncle

int uncle(struct node *temp)

需要

struct node *uncle(struct node *temp)

由于0的魔力,你可以从这些中返回0,但NULL更为传统。

将相同的原则应用于其他功能。

此外,您的color成员对"Black" +终结者来说还不够大。它需要至少6,如果你想要“紫色”或“黄色”,可能更多。