c - 推送链表-C

扫码查看

你好,我正在用c语言编写一个带有链接列表的程序,我不知道我做错了什么。问题出在“podio novo=(struct podio)malloc(sizeof(podio));”推的内部。
这是我的代码:

struct Sucesso {
    char nome_equipe[N1];
    float distancia_alvo;
    float tempo_propulsao;
};

struct Node {
    struct Sucesso *dados;
    struct Node *prox;
};

typedef struct Node podio;

void push(podio *p, struct Sucesso elem) {
    podio *novo = (struct podio*) malloc(sizeof(podio));
    if(novo != NULL) {
        novo->dados=elem;
        novo->prox=*p;
        *p=novo;
    }
}

最佳答案

问题是struct podio是一个不完整的类型,与通过podio定义的类型无关。因此,这两种类型(struct Nodetypedef struct Node podio;)不兼容;它们指向不同类型的对象。
如果在podio *行中丢失struct podio *,则应编译代码。

podio *novo = (podio *) malloc(sizeof(podio));

或:
podio *novo = malloc(sizeof(*novo));

会有人因为你而责备你;幸运的是,我不是其中之一。

10-06 13:31
查看更多