| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1023 人关注过本帖
标题:初始化创建二叉数的头结点问题
只看楼主 加入收藏
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
快速回复:初始化创建二叉数的头结点问题
数据加载中...
 
   



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

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