当我试图编译时,我得到一个错误:“取消引用指向不完整类型struct Freunde的指针”
这是我的结构:

typedef struct {
    char *Name;
    struct Freunde *next;
} Freunde;

错误发生在:
while (strcmp(Anfang->next->Name, Name) != 0)
    Anfang = Anfang->next;

Edit///下面是我试图运行的程序中的一些代码:
void add(Freunde* Anfang, char* Name) {
    Freunde * naechster;

    while (Anfang->next != NULL) {
        Anfang = Anfang->next;
    }
    Anfang->next = (Freunde*) malloc(sizeof(Freunde));
    naechster = Anfang->next;
    naechster->Name = Name;
    naechster->next = NULL;

}


int main() {
    Freunde *liste;
    liste = (Freunde*) malloc(sizeof(Freunde));

    liste->Name = "Mert";
    liste->next = NULL;

    add(liste, "Thomas");
    add(liste, "Markus");
    add(liste, "Hanko");

    Ausgabe(liste);

    return 0;
}

最佳答案

主要问题是,您将结构的next成员定义为struct Freunde *next;,但代码中没有struct Freunde
首先声明astruct Freunde,如下所示

struct Freunde
{
    char *name;
    struct Freunde *next;
};

然后你可以typedef,但你不必
typedef struct Freunde Freunde;

也:
不要为these reasons转换malloc()的返回值
始终检查malloc()是否未返回NULL

08-16 12:17