首页 > 其他 > 详细

新增指针节点时注意

时间:2017-02-05 10:54:04      阅读:267      评论:0      收藏:0      [点我收藏+]

 

以下面指针版主席树部分代码为例

在新增一个指针节点时,

不能只 node *neww,这样可能新增节点的地址与其他的地址重复

比如build 函数里,如果node neww ,那么neww的地址就会与pre的地址重复

所以要node * neww=new node()

或者是 node * neww=(node * )malloc (sizeof(node))

#include<cstdio>
#include<algorithm>
#define N 100001
using namespace std;
int n,m,a[N],hash[N];
int tot,cnt;
struct node
{
    node * l,* r;
    int sum;
};
node * root[N]; 
inline node * build(node * pre,int l,int r,int w)
{
    node *neww=new node();
    //node * neww=(node *)malloc(sizeof(node));
    neww->sum=pre->sum+1;
    if(l==r) return neww;
    int mid=l+r>>1;
    if(w<=mid)
    {
        neww->r=pre->r;
        neww->l=build(pre->l,l,mid,w);
    }
    else
    {
        neww->l=pre->l;
        neww->r=build(pre->r,mid+1,r,w);
    }
    return neww;
}
node * null(int ll,int rr)
{
    node *neww=new node();
    //node * neww=(node *)malloc(sizeof(node));
    neww->l=neww->r=NULL;
    neww->sum=0;
    if(ll==rr) return neww;
    int mid=ll+rr>>1;
    neww->l=null(ll,mid);
    neww->r=null(mid+1,rr);
    return neww;
}

 

新增指针节点时注意

原文:http://www.cnblogs.com/TheRoadToTheGold/p/6366923.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!