用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

B-树的插入

2012-10-11 作者: 神马举报

[c]代码库

int InserBTree ( NodeType **t,KeyType kx,NodeType *q,int i )
{ /* 在m 阶B 树*t 上结点*q 的
key[i],key[i+1]之间插入关键码kx*/ /*若引起结点过大,则沿双亲链进行必要的结点分裂调整,使*t
仍为m 阶B 树*/
	x=kx;
	ap=NULL;
	finished=FALSE;
	while ( q&&!finished )
	{
		Insert ( q,i,x,ap ); /*将x 和ap 分别插入到q->key[i+1]和q->ptr[i+1]*/
		if ( q->keynum<m ) finished=TRUE; /*插入完成*/
		else
		{ /*分裂结点*p*/
			s=m/2;
			split ( q,ap );
			x=q->key[s];
			/*将q->key[s+1…m],q->ptr[s…m]和q->recptr[s+1…m]移入新结点*ap*/
			q=q->parent;
			if ( q ) i=Search ( q,kx ); /*在双亲结点*q 中查找kx 的插入位置*/
		}/*else*/
	}/*while*/
	if ( !finished ) /*(*t)是空树或根结点已分裂为*q*和ap*/
		NewRoot ( t,q,x,ap ); /*生成含信息(t,x,ap)的新的根结点*t,原*t 和ap 为子树指针*/
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...