标题:关于删除指针的疑问!
只看楼主
lovehug
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-3-6
 问题点数:0 回复次数:5 
关于删除指针的疑问!
下面这段程序中的root我要重复用到,可是每次循环结束后调用deleteTree(root)却把整棵树全都删除了,包括root结点,我应该怎么做才能既删除了树,又能保存root节点下一次循环使用呢?
其中deleteTree(root)是通过后序遍历删除掉以root为根节点的树!

tnode<Data> *root,*curr;
root=new tnode<Data>(Tx);
root->upedge=root->downedge=Tx;
root->upedge.m_Inc=pi/2; root->downedge.m_Inc=-pi/2;
database(DataBase);
for(root->nodeValue.m_Inc=0;root->nodeValue.m_Inc<3;root->nodeValue.m_Inc++)
{
BF=0;
FirstModule(root,root->nodeValue.m_Inc,DataBase,&BF,&RF,"S");
deleteTree(root);
}

[此贴子已经被作者于2007-7-6 9:03:29编辑过]

搜索更多相关主题的帖子: root 指针 疑问 Inc 
2007-07-05 21:44
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
得分:0 
删除之前复制一份可以吗?

try new catch
2007-07-05 23:50
lovehug
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-3-6
得分:0 

好像不可以,我定义了另一个指针指向root结点,不过当root结点删除后,这个指针指向的结点也不是root结点了!

2007-07-06 07:58
lovehug
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-3-6
得分:0 
问题已经解决了!可以这样操作!
deleteTree(root->left);
root->left=NULL;
deleteTree(root->right);
root->right=NULL;
断其左右branch,最重要的是不要忘了root结点左右指针置空!
2007-07-06 09:02
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
得分:0 

看你上面的代码知道你的意思了
你在删除tree之前把根结点完整的复制一份就好了,复制指针是不行的


try new catch
2007-07-06 16:29
lovehug
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-3-6
得分:0 

是的,复制指针还是会变化的!

2007-07-08 10:02



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




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

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