节点的全局变量

Global variables for Nodes

我正在尝试创建一个简单的程序来将单词插入 Linked List,但我很难理解代表 head 和 [=] 的全局指针14=] Nodes

据我了解,如果我要 struct 例如:

typedef struct NODE
{
    char *item;
    struct Node *next; 

} Node, *Node_ptr;

然后我可以简单地通过在 typedef:

下声明它们来创建全局变量
struct Node_ptr* head = NULL; 
struct Node_ptr* next = NULL;

但我是否立即将它们分配给 NULL?或者用 main 之类的方法来做?另外,我必须在它前面加上struct吗?

But do I assign them to NULL immediately? Or do that in a method such as main?

如果您不放置显式初始化器,在文件范围内定义的指针(您称之为全局)将自动初始化为 NULL。因此在 main 中通过赋值初始化它们是多余的。

Also, do I have to have the struct in front of it?

根据您的定义类型和别名类型定义,有 3 种有效(和等效)方式可以声明此类指针:

/* The = NULL initializer is optional at file-scope */
Node_ptr bla = NULL; 
Node *bla = NULL; 
struct NODE *bla = NULL; 

(但不是你不能使用无效的 struct Node_ptr* head = NULL;。)

首先,正确的方法是:

typedef struct NODE
{
    char *item;
    struct NODE *next; // Notice here

} Node, *Node_ptr;

而上面的代码等同于

struct NODE 
{
    char *item;
    struct NODE *next; 
};

typdef struct NODE Node , *Node_ptr;

然后,你只需要用Nodestruct NODE*Node_ptr声明一个struct NODE变量,像这样:

Node_ptr head = NULL; 
Node_ptr next = NULL;

我认为在声明时将其初始化为 NULL 是一个好习惯。但如果你在 main.

中这样做也很好