【问题标题】:In this node definition, why are we using the "Node" after the structure definition?在这个节点定义中,为什么我们在结构定义之后使用“节点”?
【发布时间】:2017-11-15 04:36:28
【问题描述】:
typedef struct node
{
 int data;
 struct node *next;
}Node;  // ???

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

【问题讨论】:

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


    【解决方案1】:

    结构定义后有一个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 来引用相同的类型。

    【讨论】:

    • 是的,我的导师有 C 背景。我对它不是很熟悉。我不知道“struct”关键字在 C++ 中是可选的,但在创建 struct 对象时在 C 中是必需的。这是所有混乱的根本原因。谢谢。
    • @hawkeyes21 - 嗯,C 是 C++ 的姊妹语言。如果你的导师不教 C 类的东西会更好,但你需要使用你所拥有的东西。
    【解决方案2】:

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

    因此,您可以轻松地使用Node n1; 而不是struct node n1

    【讨论】:

    • 好的,换句话说,在创建新节点时,我可以使用节点 *p(小 n)或节点 *p(大写 N)。他们两个意思一样吗?
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多