c - 在c中处理链表

标签 c linked-list

我有一个像这样声明的标题

#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);

它不起作用,我正在声明一个 elem CACHORRO

最佳答案

  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/

相关文章:

c - C 扩展中的 R 索引多维结构

c - 获取 const void 的内容

c - 交换单链表中的两个节点

java - 从未排序的单链表中删除重复项,在尝试跳过重复元素时导致逻辑错误

c - 如何将 POSIX sem_t 信号量增加 1 以上?

c++ - 如果父线程 id 没有作为 pthread_create 的参数传入,是否有可能从 C/C++ 的线程内获取父线程 id?

c# - 按第二个列表的顺序选择第二个列表中的相同元素

c++ - 整数列表的交集 - 无法返回结果列表

c++ - 制作 Vista/7 User Frame 控件? (WinAPI)

java - 我可以让一个方法忽略 LinkedList 中值中的字符吗?