在这个节点定义中,为什么我们在结构定义之后使用“Node”?

时间:2017-11-15 04:36:28

标签: c++ data-structures linked-list

typedef struct node
{
 int data;
 struct node *next;
}Node;  // ???

我不明白为什么我们在定义后使用Node。执行什么功能?它是否会阻止结构无限地指向自身? 问题可能听起来很愚蠢,我还在学习。 谢谢。

2 个答案:

答案 0 :(得分:2)

在结构定义之后有一个Node,因为之前有一个typedef

结构定义本身就是:

struct node
{
  int data;
  struct node *next;
};

由于这是C ++,这足以通过名称node引用结构类型。然而,似乎编写它的人最初要么是来自C背景,要么是为了提供C兼容的头。在C中,你必须将其称为struct node,有些人认为这是冗长的。所以有问题的人立即提供了一个类型别名。您提供的代码相当于:

struct node
{
  int data;
  struct node *next;
};

typedef struct node Node;

它允许我们在C或C ++中用名称Node引用相同的类型。

答案 1 :(得分:0)

在这里,您已定义了一个结构,并同时声明了一个结构变量。 typedef关键字用于创建Node类型,类型为struct node

因此,您可以轻松使用Node n1;代替struct node n1