| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 448 人关注过本帖
标题:B-树结点的分裂 不是很理解 求指点
取消只看楼主 加入收藏
世界模型
Rank: 4
等 级:业余侠客
威 望:1
帖 子:240
专家分:226
注 册:2010-9-12
结帖率:97.44%
收藏
已结贴  问题点数:60 回复次数:0 
B-树结点的分裂 不是很理解 求指点
程序代码:
/* 将结点q分裂成两个结点,前一半保留,后一半移入新生结点ap */ 
void split(BTree *q,BTree *ap) 
{ 
    int i,s=(m+1)/2; s?

 
   *ap=(BTree)malloc(sizeof(BTNode));//生产新生结点ap  
    (*ap)->node[0].ptr=(*q)->node[s].ptr;//后一半移入ap  
 
  for(i=s+1;i<=m;i++)  i=s+1??????????????????
    {              
        (*ap)->node[i-s]=(*q)->node[i];  ?????????
       if((*ap)->node[i-s].ptr)  ????????
          (*ap)->node[i-s].ptr->parent=*ap; 
    } 
    (*ap)->keynum=m-s;  ??
    (*ap)->parent=(*q)->parent; 
    (*q)->keynum=s-1;//q的前一半保留 修改keynum  
}
/* 生成含信息(T,r,ap)的新的根结点*T 原T和ap为子树指针 */ 
void NewRoot(BTree *T,Record *r,BTree ap) 
{ 
    BTree p; 
   p=(BTree)malloc(sizeof(BTNode)); 
    p->node[0].ptr=*T; 
    *T=p; 
   if((*T)->node[0].ptr) 
        (*T)->node[0].ptr->parent=*T; 
    (*T)->parent=NULL;  ???????
    (*T)->keynum=1; 
   (*T)->node[1].key=r->key; ?????????
    (*T)->node[1].reptr=r;  ????????
    (*T)->node[1].ptr=ap; ????、、
   if((*T)->node[1].ptr) 
       (*T)->node[1].ptr->parent=*T;  ????????
}  

m表示阶数 i表示在结点中的序号
搜索更多相关主题的帖子: 分裂 
2011-08-14 21:20
快速回复:B-树结点的分裂 不是很理解 求指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047779 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved