制作链接列表

时间:2012-11-04 03:00:01

标签: c linked-list visual-studio-2012

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

    CitizenType *next;

}CitizenType;

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

3 个答案:

答案 0 :(得分:4)

在结构之前(和单独)声明typedef。

typedef struct citizen_type CitizenType;

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

答案 1 :(得分:1)

问题在于

CitizenType

只有在结构结束后才进入类型的命名空间。

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

您可以使用struct name(给结构命名)代替它,或者在声明具有名称的结构之前声明类型,如上一篇文章所述。

答案 2 :(得分:0)

试试这个:

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

    struct node *next;

}CitizenType;

检查this堆栈溢出答案,了解有关C中自引用结构的更多信息。来自答案:

  

CitizenType不能包含另一个CitizenType   一个永无止境的递归。

希望它有所帮助!