标题: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-347614-1-1.html




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

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