You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言二叉树比较代码编译报错:invalid operands to binary != 求助

编译错误原因

错误行} else if (arv1->item != arv2->item) {触发编译失败,核心原因是C语言不支持直接用关系运算符(如!=、==)比较自定义结构体实例。ITEM是你定义的结构体类型,编译器无法自动判断两个结构体是否相等,必须手动指定比较逻辑。

修复方案

方案1:复用已实现的itensIguais函数

你已经定义了判断两个ITEM是否相等的函数itensIguais,直接取反即可判断不等:

} else if (!itensIguais(arv1->item, arv2->item)) {

这种方案的优势是扩展性强——如果后续ITEM结构体新增字段,只需要修改itensIguais函数的实现,无需改动所有比较逻辑。

方案2:直接比较结构体成员

如果不想调用函数,也可以直接比较结构体中用于判断相等的核心字段chave:

} else if (arv1->item.chave != arv2->item.chave) {

修复后的完整iguais函数示例(方案1)

bool iguais(ARVORE_BINARIA *arv1, ARVORE_BINARIA *arv2)
{
    if (arv1 == NULL && arv2 == NULL) {
        return true;
    } else if (arv1 == NULL || arv2 == NULL) {
        return false;
    } else if (!itensIguais(arv1->item, arv2->item)) {
        return false;
    } else {
        bool esquerda_iguais = iguais(arv1->esq, arv2->esq);
        bool direita_iguais = iguais(arv1->dir, arv2->dir);
        return esquerda_iguais && direita_iguais;
    }
}

内容的提问来源于stack exchange,提问作者ewrt86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:14:59