永发信息网

typedef struct BTNode { datatype data; struct BTNode *lchild; struct BTNode *rchild;

答案:2  悬赏:50  手机版
解决时间 2021-03-02 06:13
}btNode,*BiTree;

void CreateBiTree(BiTree *T)

{ DataType ch;
scanf("%c",&ch);
if(ch=='#')
*T=NULL;
else
{ *T=(BiTree )malloc(sizeof(btNode);
if(!(*T))
exit(-1)'
CreateBiTree(&((*T)->lchild));
CreateBiTree(&((*T)->lchild));
}

}
在这个创建二叉树的过程中,结构体定义时BiTree就相当于struct BTNode*。但在函数中
BiTree *T,T前又多了 一个*,那不就成了struct BTNode**T了吗?难道说T是一个结构体二级指针吗?还有在CreateBiTree(&((*T)->lchild))语句中&起什么作用?可以不要吗?哪位大神指教一下。
最佳答案
C:函数里要想改变指针的值,形参必须是指针的指针(二级以上指针),实参是指针的地址,指针变量;和普通变量,指针常量和普通常量(如 int * const)除了可以改变或获取,所指对象的的值以外,其他和普通的变量,常量没有啥不同。

因为创建函数要为节点(一个一级指针)赋值,所以,必须传入节点的地址(指针的地址)
所以形参必须是二级指针,实参必须是节点的地址(指针的地址)。

C++:还可以,采用引用传递,形参是节点(指针)的引用,实参是节点本身。

CreateBiTree(&((*T)->lchild)); 是递归调用

函数CreateBiTree 是个递归函数.就是直接,或者间接,调用自己的函数。

void CreateBiTree(BiTree *T)
{ DataType ch;
scanf("%c",&ch);
if(ch=='#')
*T=NULL;

else
{ *T=(BiTree )malloc(sizeof(btNode);
if(!(*T))
exit(-1)'
CreateBiTree(&((*T)->lchild));



CreateBiTree(&((*T)->lchild));

CreateBiTree(&((*T)->rchild));
}
}
全部回答
void visit(datatype data) { // 对data操作 } void postorder(bitreptr *t) { if (t == null) return; postorder(t->lchild); postorder(t->rchild); visit(t->data); // 这个函数访问data }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁知道黑客Jyang写的《信息安全与渗透测试》
贝拉日记客栈在哪里啊,我有事要去这个地方
从事心电图的工作人员需要什么证件
石记卤味轩东方家园店地址在什么地方,想过去
54加5的和是多少
凤云村地址有知道的么?有点事想过去
【汽轮机原理】关于汽轮机原理的计算题已知收
二婚请帖内容我和我老婆是二婚,通知亲朋好友
买房只有购房合同没有全款发票怎么办
FIFA18怎么没有重复训练了
金鹤苑在什么地方啊,我要过去处理事情
商务咨询公司和贸易公司有什么区别?
小孩 一个多月了 一抱起来头就往后仰 正常吗
工商局是不是和国税局一样的
硬币袋放在包里,过安检时会通过吗
推荐资讯
生鲜食品具有哪些特点
湖南常德市哪里有招商银行还信用卡
某学校男女生比例为1∶1,红绿色盲患者占0.7%
苹果6前置摄像头照的照片和人眼看到的图片哪
安徒生是一百多年前的什么人?他是著名的什么
鲁泰防水宝鸡直营店地址有知道的么?有点事想
氢氧化钠和氢氧化铜的元素符号
(-1.25)除2又1/12 0除(-5)乘108 -4除2&
曲沃在北京的什么方向
asp连接 sqlserver 远程连接 怎么连?
雅都烫染造型地址在哪,我要去那里办事,
潞安集团五阳煤矿社区居民委员会地址在哪,我
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?