yangkeao
V2EX  ›  问与答

线段树 build 出错

  •  
  •   yangkeao · Jul 8, 2014 · 3556 views
    This topic created in 4509 days ago, the information mentioned may be changed or developed.
    https://gist.github.com/VDON/3d976d9a4b96abb1e3d0


    c++

    IDE是Dev-c++
    在执行build第一步的时候就报错。

    实在没看出为什么。。。
    11 replies  •  2014-07-09 11:24:34 +08:00
    dingyaguang117
    dingyaguang117
    Jul 8, 2014
    1
    目测你的l,r用的是闭区间吧?
    那么不应该+1吗
    build(cur->lc,l,(l+r)/2);
    build(cur->rc,(l+r)/2 **+1**,r);
    iloahz
    iloahz
    Jul 8, 2014 via iPhone
    2
    @dingyaguang117 lz那里确实是没想清楚,不过单build来看,如果是表示左闭右开也是说得过去的。
    我总觉得是不是编译错啊,18,19行Node后面不用加括号么…sorry手机无法验证
    yangkeao
    yangkeao
    OP
    Jul 8, 2014
    3
    @dingyaguang117 左闭右开
    yangkeao
    yangkeao
    OP
    Jul 8, 2014
    4
    @iloahz 编译没错,单步运行到14行出错
    iloahz
    iloahz
    Jul 8, 2014 via iPhone
    5
    @yangkeao 哦,你的root指针忘了初始化了,60行后面,new一下
    yangkeao
    yangkeao
    OP
    Jul 8, 2014
    6
    @iloahz 额,什么意思?
    47jm9ozp
    47jm9ozp
    Jul 8, 2014
    7
    @yangkeao 60行,

    Node *cur;

    改成 Node *cur = new Node;

    你的cur指针没有初始化,没有为根节点分配内存
    yangkeao
    yangkeao
    OP
    Jul 8, 2014
    8
    @ooxxcc 哦,我试试
    yangkeao
    yangkeao
    OP
    Jul 9, 2014
    9
    @ooxxcc build的问题解决了。但是change第三次时,在26行出现问题。
    47jm9ozp
    47jm9ozp
    Jul 9, 2014
    10
    @yangkeao 代码写的太乱静不下心看……
    yangkeao
    yangkeao
    OP
    Jul 9, 2014
    11
    @ooxxcc 可是线段树有没有什么好的写法
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4336 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:35 · PVG 16:35 · LAX 00:35 · JFK 03:35
    ♥ Do have faith in what you're doing.