有人可以为我解释这段代码吗?
typedef char AirportCode[4];
typedef struct NodeTag{
AirportCode Airport;
struct NodeTag *link;
}Node;
Node *L;
这是我的数据结构类中的一段代码。这段代码的实现是为了将数据保存在链表节点中。我想了解的是 NodeTag 通常的用途是什么?是不是因为缺少更好的词而希望结构在其自身内部进行另一次迭代? NodeTag 和花括号后面的内容(在本例中为“Node”)有什么区别?
您在这里将两件事合而为一:
(1) 结构声明:
struct NodeTag{
AirportCode Airport;
struct NodeTag *link;
};
这将要求您像这样声明您的节点:
struct NodeTag *nt;
结构定义的右大括号之后的任何内容都将声明该类型的变量。
struct foo {int n;} a_global_variable;
使用 (2) typedef
:
typedef ... Node;
这让你可以简单地说:
Node *n;
但是,在 struct 声明中,由于 typedef
尚不存在,您仍必须使用 struct NodeTag *nt
而不是 Node *n