zoukankan      html  css  js  c++  java
  • 新增指针节点时注意

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

    在新增一个指针节点时,

    不能只 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;
    }
  • 相关阅读:
    nginx
    不再想写博客的大众集合教程
    数据结构与算法之算法
    数据结构与算法
    yii2的安装使用
    git的使用方法总结
    php生成图片验证码
    git推送失败的问题
    配置nginx支持thinkphp框架
    centos下的lnmp环境搭建
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6366923.html
Copyright © 2011-2022 走看看