一棵诡异的树

youyouwosi youyouwosi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
for (i=0; i<context->nSymbols; i++)
ContextPutValue(context, 1, i);

void ContextPutValue(Context *context, int val, int ix)
{
assert(ix>=0);

if (ix==0){
context->Tree[0]+=val;
}
else{
while(ix < context->nSymbols){
context->Tree[ix] = context->Tree[ix] + val;
ix = 2*ix - (ix & (ix-1));
}
}

context->TotalFreq+=val;
}

这是我获得的一个免费代码中的一段,其中context是一个结构体,里面有int *Tree来构建一棵树,构建树的代码就这些,很困惑其中的想法,以及
ix = 2 * ix - (ix & (ix-1));的用途,望大家不吝赐教。
...全文
评论 8
收藏 已收藏
分享
返回顶部
youyouwosi
C语言 70,039 成员 243,237 内容