一棵诡异的树

youyouwosi 2004-02-29 10:50:05
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));的用途,望大家不吝赐教。
...全文
20 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧