我有一个这样的报头

#include <stdlib.h>

struct Nodo {
    struct Nodo *pAnterior;
    struct Nodo *pProximo;
    CACHORRO cachorro;
};

typedef struct Nodo *Lista;
typedef struct Nodo *DoenteMachucado;
typedef struct Nodo *portePequeno;
typedef struct Nodo *porteMedio;
typedef struct Nodo *porteGrande;

但是当我尝试使用这个函数时
void inserir(Lista *lista, CACHORRO elem)
{
    Lista Nodo;
    Nodo = (Lista)malloc(sizeof(struct Nodo));
    if(Nodo == NULL)
        printf("Sem memoria\n");

    Nodo->cachorro = elem;
    Nodo->pAnterior = NULL;
    Nodo->pProximo = (*lista);

    if((*lista) != NULL)
        (*lista)->pAnterior = Nodo;

    (*lista) = Nodo;
}

这样地
inserir(DoenteMachucado, elem);

它不起作用,我要宣布一个埃伦仙人掌

最佳答案

  void inserir(Lista *lista, CACHORRO elem)

上面的陈述减少到
  void inserir(struct Nodo **lista, CACHORRO elem)//1

你把上面的函数叫做
  DoenteMachucado something;
  inserir(something, elem); //remember DoenteMachucado is a type not a variable ,something is a variable.so i have changed this.

其中第一个参数的类型是struct Nodo*
  inserir(struct Nodo* something, elem);//2

参数在1和2处不匹配。
您可能希望将函数调用为
 DoenteMachucado something;
 inserir(&something, elem);

关于c - 在c中处理链表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31156682/

10-11 19:43