在 C 语言中,我们必须使用 struct Node* next
而不是 Node* next
,因为 C 语言的结构体类型必须使用 struct
关键字来引用,除非提前使用 typedef
进行类型定义。下面解释原因和替代方式:
1. 使用 struct
关键字的原因
在 C 语言中,如果直接写 Node* next
,编译器不会识别 Node
,因为 Node
本身并不是一个类型。它仅是一个结构体标签。要让 C 语言理解 Node
的类型,需要在声明中加上 struct
,写成 struct Node* next
。
struct Node {
int data;
struct Node* next; // 必须写 struct Node*
};
2. 用 typedef
简化
可以通过 typedef
创建一个新的类型名 Node
,然后在声明时就可以直接用 Node
而不用写 struct
。例如:
typedef struct Node {
int data;
struct Node* next;
} Node;
这样,Node
就成为一个新类型,可以直接使用:
Node* head = NULL; // 现在可以直接写 Node* 而不需要 struct