Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在typedef结构中定义结构_C++_Struct - Fatal编程技术网

C++ 在typedef结构中定义结构

C++ 在typedef结构中定义结构,c++,struct,C++,Struct,例如,上面的一个定义了结构leaf,并生成了该类型的两个成员:lchild和rchild。那么这像是递归吗?这是一种数据结构,您通常希望使用递归算法处理它。是的,我想这有点像“数据递归” 请注意,“叶子”是一个非常糟糕的名字。按照正常术语,叶子没有子元素,“节点”或类似的名称是正常名称。你的假设是错误的leaf有两个类型为leaf*的成员,而不是leaf。所以这不是(数据)递归 以及以下 typedef struct leaf{ int value; struct leaf* lchil

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

这是一种数据结构,您通常希望使用递归算法处理它。是的,我想这有点像“数据递归”


请注意,“叶子”是一个非常糟糕的名字。按照正常术语,叶子没有子元素,“节点”或类似的名称是正常名称。

你的假设是错误的
leaf
有两个类型为
leaf*
的成员,而不是
leaf
。所以这不是(数据)递归

以及以下

typedef struct leaf{
  int value;
  struct leaf* lchild;
  struct leaf* rchild;
} LEAF;

在C++中是非法的。请注意,在C++中,当声明一个变量的成员时,不需要<代码>结构叶>代码>,也不需要<代码> TyPulfF。< /P> < P>的含义是:

“…允许函数调用自身…”

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


假设您使用的是二叉树,递归的一个例子就是搜索。其中,inoorder方法调用自己的左子级和右子级。

对于“kinda”的一些定义,可能。。。但是,不是真的。您没有创建与结构具有相同类型的成员,而是创建指向以该结构作为其类型的其他对象的指针的成员。。。因此,它更像是一种“前向引用”,因为类型尚未完全定义;不是递归……在C++中不需要使用<代码> TyPulf…LEAFwrapper,也不适用于定义中的两种
struct
。这不是“递归”的唯一定义。你是对的,它可能是递归数据类型。我应该说得更具体些。
struct leaf
{
    leaf x;
};