[英]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.