对于这些声明的行,我有些困惑。我想为我的程序创建一个链表,但是由于某种原因,当我尝试编译它时,它总是会出现错误。基本上,这将是我的主节点模型,并且在列表之后还有另一个结构(WITHOUT TYPEDEF)。哪个编译就好了。我不知道怎么了
我已经尝试过将typedef放在struct学生上。
typedef struct
{
char name[50];
int id;
node next;
}student;
typedef student* node;
typedef struct listR* list;
struct listR
{
node head,tail;
int size;
};
错误: 类型名称未知的“节点” 警告: 初始化从整数开始的指针,无需强制转换
答案 0 :(得分:2)
编译器不知道节点是什么,因为您是在创建结构之后创建节点类型的。
您可以执行以下任一操作:
typedef struct node node;
struct node
{
char name[50];
int id;
node* next;
};
要告诉编译器节点是什么,
或
typedef struct node {
char name[50];
int id;
struct node* next;
} node;
答案 1 :(得分:0)
我会用这个:
struct Node
{
struct Node *next;
struct Node *prev;
};
但后来我碰巧是那些没有充分理由不喜欢类型定义结构的人之一。在此处阅读更多信息:https://stackoverflow.com/a/54752982/6699433