2 u011668631 u011668631 于 2014.11.25 11:03 提问

二叉树 节点类型为结构类型 如何初始化和赋值?

struct ItemNode
{
int id;
string name;
};

typedef struct BNode
{
ItemNode node;
BNode *lChild;
BNode *rChild;
}BNode;

3个回答

caozhy
caozhy   Ds   Rxr 2014.11.25 11:09

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;

u011668631
u011668631   2014.11.25 11:18

我是想定义BNode *p = new BNode; 然后不知道怎么初始化以及判断是否为空,另外赋值的话需要重载=吗?

eagleyan
eagleyan   Rxr 2014.12.01 04:16

不知道你在用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&

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!