首页 > 代码库 > 新增指针节点时注意
新增指针节点时注意
以下面指针版主席树部分代码为例
在新增一个指针节点时,
不能只 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; }
新增指针节点时注意
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。