c++ - 在这个节点定义中,为什么我们在结构体定义之后使用 "Node"?

标签 c++ data-structures linked-list

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

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

最佳答案

结构体定义之后有一个 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++ - 在这个节点定义中,为什么我们在结构体定义之后使用 "Node"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299429/

相关文章:

Java数据结构允许对象上的 boolean 标志和排序?

python - 实现动态多时间线队列

c - 链表问题

c++ - 链表离开递归函数后丢失节点

c++ - 如何在 C/C++ 中有效地计算 double 到两位小数?

C++将分隔文件导入 vector

c++ - 不可读的文件

c++ - 为什么我的简单 C++ GUI 应用程序显示中文消息框?

c++ - 适合集合(图形)分区的数据结构

c - 从队列中删除偶数