问题描述
- 二叉树 节点类型为结构类型 如何初始化和赋值?
-
struct ItemNode
{
int id;
string name;
};typedef struct BNode
{
ItemNode node;
BNode *lChild;
BNode *rChild;
}BNode;
解决方案
ItemNode i1, i2, i3;
i1.id = 1;
i1.name = "a";
i1.id = 2;
i1.name = "b";
i1.id = 3;
i1.name = "c";
BNode b1, b2, b3;
b1.node = i1;
b2.node = i2;
b3.node = i3;
b1.lChild = &b2;
b1.rChild = &b3;
解决方案二:
我是想定义BNode *p = new BNode; 然后不知道怎么初始化以及判断是否为空,另外赋值的话需要重载=吗?
解决方案三:
不知道你在用c还是c++,在c++里struct和class是同义词,但是c里面是没有class的,也不能用new。(这里看到你用string,貌似你在用c++)
在c里面你应该这样申请空间
BNode *p = (BNode *)malloc(sizeof(BNode));
p->id = 1;
最后用完再free(p);
c++里你可以
BNode *p = new BNode;
另外赋值的话需要重载=吗,=调用的事copy constructor, 如果你的程序里面希望string相互不影响,你需要重载copy constructor
还有,你的name最好定义成string&
时间: 2024-10-29 08:31:13