标题:初始化创建二叉数的头结点问题
只看楼主
zacom
Rank: 2
等 级:论坛游民
威 望:2
帖 子:381
专家分:15
注 册:2007-9-15
结帖率:88.89%
 问题点数:0 回复次数:7 
初始化创建二叉数的头结点问题
为什么void initiate(bitreenode **root)中要使用指向指针的指针来初始化呢?请给个详细点看法
搜索更多相关主题的帖子: 结点 指针 void root bitreenode 
2007-10-20 17:11
cobby
Rank: 1
等 级:新手上路
威 望:1
帖 子:565
专家分:0
注 册:2007-7-11
得分:0 
看程序需要的,这样写说明程序中二叉树头结点仅有一个指针而不包含数据域

努力成为菜鸟!
2007-10-20 20:03
zacom
Rank: 2
等 级:论坛游民
威 望:2
帖 子:381
专家分:15
注 册:2007-9-15
得分:0 

那为什么做链堆栈时有些需要写void initiate(bitreenode **root),不能写为void initiate(bitreenode *root)


没有最好只有更好
2007-10-20 20:20
cobby
Rank: 1
等 级:新手上路
威 望:1
帖 子:565
专家分:0
注 册:2007-7-11
得分:0 
因为在初始化以及之后的操作中,头结点或者头指针是不能移动的,不然会丢失整个树

努力成为菜鸟!
2007-10-20 20:42
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用zacom在2007-10-20 17:11:14的发言:
为什么void initiate(bitreenode **root)中要使用指向指针的指针来初始化呢?请给个详细点看法

因为我们会修改 *root,但是对一棵树来说,应该要随时能根据根找到整个树,所以要保存一个不能改变的值
那就是 **root.

我们降一级来说.定义一个整型指针 *p.我们可以修改 *p而不至于丢失这个指针,但改变了p了.那就不对了.
如果要修改的是一个地址,那么我们就得保存这个指针的地址.(二级指针).


倚天照海花无数,流水高山心自知。
2007-10-20 21:21
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
得分:0 
斑竹说的好详细啊,获益匪浅

------------------不为别的,就为你,我的理想!-----------------
2007-10-20 21:31
飞寒
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-10-19
得分:0 
为什么呢!如果你看完楼上的话还是不懂的话我就来说一下吧!
我们在调用函数的时候是把实参的值传递给行参而已,所以如果我们要改变那个被传递的值的话
就要传递那个值的地址!(不变的值)。而你在定义那个root的时候要改变的是root的指针(用完malloc函数之后你的root的指针的值会改变!)
所以我们要传的是root的指针的指针!
2007-10-21 08:36
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
得分:0 
LS补充的很好.学习了.

------------------不为别的,就为你,我的理想!-----------------
2007-10-21 22:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-179345-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.476410 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved