树实现 - C语言

时间:2017-07-23 00:47:16

标签: c

我正在尝试创建一个在二叉树中插入节点的函数,但是我从C编译器得到以下错误: 省略参数名称

我的代码中有几个字在葡萄牙语中,所以我会写下他们的翻译:

  • esq是“left”
  • dir是“正确的”
  • 勇气是“价值”

有人可以帮助我吗?

这是功能:

void insere_Arvore(nodo* raiz, registro){
    if(raiz == NULL)
        {
        return 0
        }
    nodo* novo = (nodo*)malloc(sizeof(nodo));
    if(novo == NULL)
        return 0;
    novo->dado->valor = valor1;
    novo->dir = NULL;
    novo->esq= NULL;
    if(*raiz = NULL)
    {
        *raiz = novo;
    }
    else{
        nodo* atual = *raiz;
        nodo* ant = NULL;
    }

    while(atual != NULL)
    {
        ant = atual;
        if (valor1 == atual->dado->valor){
            free(novo);
            return 0;
        }

        if(valor1 > atual->dado->valor)
        {
            atual = atual->dir;
        }
        else{
            atual = atual->esq;
        }
        if(valor1 > ant->dado->valor)
        {
            ant->dir = novo;
        }
        else{
            ant->esq = novo;
        }
        if(valor > ant->dado->valor){
            ant->dir = novo;
        }
        else{
            ant->esq = novo;
        }
    }
    return 1;
}

以下是我创建的所有结构:

typedef struct registro_st{         // sequência de objetos do mesmo tipo
    char login[50];
    char nome[50];
    float valor;
    struct registro *prox;
} registro;

typedef struct nodo_st{
    registro *dado;
    struct nodo_st *dir;
    struct nodo_st *esq;
} nodo;

typedef struct Lista_st{
    nodo *cabeca;
    nodo *cauda;
    int tamanho;
} lista;

nodo* raiz;

void insere_Arvore(nodo* raiz, registro){
    if(raiz == NULL)
        {
        return 0
        }
    nodo* novo = (nodo*)malloc(sizeof(nodo));
    if(novo == NULL)
        return 0;
    novo->dado->valor = valor1;
    novo->dir = NULL;
    novo->esq= NULL;
        if(*raiz = NULL)
        {
            *raiz = novo;
        }
    else{
    nodo* atual = *raiz;
    nodo* ant = NULL;
    }

        while(atual != NULL)
            {
            ant = atual;
            if (valor1 == atual->dado->valor){
                            free(novo);
                            return 0;
            }

        if(valor1 > atual->dado->valor)
                                    {
                    atual = atual->dir;
        else{
                    atual = atual->esq;
        }
        if(valor1 > ant->dado->valor)
                                    {
        ant->dir = novo;
        }
        else{
        ant->esq = novo;
        }
        if(valor > ant->dado->valor){
            ant->dir = novo;
        }
        else{
        ant->esq = novo;
        }
        }
            }
        return 1;
}

1 个答案:

答案 0 :(得分:1)

  • 在函数void insere_Arvore(nodo* raiz, registro)
  • 为第二个参数命名,如int,void,char,smth ..
  • 然后将您的函数类型更改为int。因为返回0和1是整数。 int insere_Arvore(nodo* raiz, [int, char, smth] registro)