线段树 build 出错

2014-07-08 17:09:38 +08:00
 yangkeao
https://gist.github.com/VDON/3d976d9a4b96abb1e3d0


c++

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

实在没看出为什么。。。
2702 次点击
所在节点    问与答
11 条回复
dingyaguang117
2014-07-08 19:23:04 +08:00
目测你的l,r用的是闭区间吧?
那么不应该+1吗
build(cur->lc,l,(l+r)/2);
build(cur->rc,(l+r)/2 **+1**,r);
iloahz
2014-07-08 20:15:18 +08:00
@dingyaguang117 lz那里确实是没想清楚,不过单build来看,如果是表示左闭右开也是说得过去的。
我总觉得是不是编译错啊,18,19行Node后面不用加括号么…sorry手机无法验证
yangkeao
2014-07-08 20:35:29 +08:00
@dingyaguang117 左闭右开
yangkeao
2014-07-08 20:37:12 +08:00
@iloahz 编译没错,单步运行到14行出错
iloahz
2014-07-08 21:45:51 +08:00
@yangkeao 哦,你的root指针忘了初始化了,60行后面,new一下
yangkeao
2014-07-08 21:49:15 +08:00
@iloahz 额,什么意思?
ooxxcc
2014-07-08 21:57:09 +08:00
@yangkeao 60行,

Node *cur;

改成 Node *cur = new Node;

你的cur指针没有初始化,没有为根节点分配内存
yangkeao
2014-07-08 22:01:51 +08:00
@ooxxcc 哦,我试试
yangkeao
2014-07-09 10:33:32 +08:00
@ooxxcc build的问题解决了。但是change第三次时,在26行出现问题。
ooxxcc
2014-07-09 11:19:26 +08:00
@yangkeao 代码写的太乱静不下心看……
yangkeao
2014-07-09 11:24:34 +08:00
@ooxxcc 可是线段树有没有什么好的写法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121580

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX