在Typedef结构中定义结构

Defining struct within typedef struct

本文关键字:结构 定义 Typedef      更新时间:2023-10-16
typedef struct leaf{
  int value;
  struct leaf* lchild;
  struct leaf* rchild;
} LEAF;

例如,上面的一个定义了结构leaf,并使该类型的2个成员:lchild,rchild。那么这就像递归吗?

您的假设是错误的。leaf有2个类型leaf*的成员,而不是leaf。因此,它不是(数据)递归。

和以下

struct leaf
{
    leaf x;
};

在C 中是非法的。请注意,在C 声明该类型变量的成员时,您不需要struct leaf,也不需要typedef

这是一个数据结构,您通常需要使用递归算法来处理。所以是的,我想这有点像"数据递归"。

请注意,"叶子"是一个非常糟糕的名字。按照普通末端,叶子没有孩子,"节点"或类似的东西是正常名称。

递归的含义是:

" ...允许函数自我调用..."

您所拥有的基本上只是一个引用(指针)到另一个结构。

假设您正在使用二进制树,则递归的示例将是有序搜索。其中 inorder 方法将自己称为左孩子和右子。