繁体   English   中英

制作链接列表

[英]Making a Linked List

typedef struct{
    char name[25];
    int yearOfBirth;
    int district;
    char gender;
    int age;

    CitizenType *next;

}CitizenType;

当我尝试在Visual Studio中以这种格式制作“链接列表”时,出现各种与语法有关的错误。 (总共102个),但是当我注释掉CitizenType * next;时; 我没有错误。 我意识到它与在结构完全声明之前引用结构有关,但是我不知道如何解决此问题。

在结构之前(与结构分开)声明typedef。

typedef struct citizen_type CitizenType;

struct citizen_type {
    ...
    CitizenType *next;
};

问题是

CitizenType

仅在结构结束后才进入类型的名称空间。

因此,只有在声明新类型后才能使用它。

您可以代替使用struct name (为struct name ),也可以在使用名称声明结构之前声明类型,如上一篇文章所述。

尝试这个:

typedef struct node{
    char name[25];
    int yearOfBirth;
    int district;
    char gender;
    int age;

    struct node *next;

}CitizenType;

检查堆栈溢出答案以获取有关C中自引用结构的更多信息。

一个CitizenType不能包含另一个CitizenType,因为它成为无休止的递归。

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM