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表示在结点中的序号										
					
	


											
	    

	