B_树



/*树表查找*/

typedef int KeyType;
const int MaxKey = 65535;

/*B_树*/

//结点类型定义
const int m = 10;
struct MBNode
{
	int keynum;  //关键字个数域
	MBNode *parent;  //指向父结点的指针域
	KeyType key[m+1];  //保存n个关键字的域,下标0位置未用
	MBNode *ptr[m+1];  //保存n+1个指向子树的指针域
	int recptr[m+1];   //保存每个关键字对应记录的存储位置域,
		//假定所有记录被存储在外存上一个文件中,这里的recptr[i]
		//保存key[i]对应记录在文件中的位置序号,所以被定义为整型
};

//查找
int search(MBNode *MT, KeyType k)
{
	MBNode *p = MT;
	while (p != NULL)
	{//从树根结点起依次向下一层查找
		int n = p->keynum;  //把结点中的关键字个数赋给n
		int i = 1;  //用i表示待比较的关键字序号,初值为1
		p->key[n+1] = MaxKey;  //把MAXKEY常量赋给序号为n+1的关键字域
		while(k > p->key[i])
			i++;    //用K顺序同结点中的每一关键字进行比较,
					//直到小于等于某个关键字为止,此步也可采用二分查找
		if(k == p->key[i])
			return p->recptr[i];  //查找成功返回记录的存储位置
		else
			p = p->ptr[i-1];  //继续向子树查找
	}
	return -1;  //查找失败返回-1
}

//插入


//删除







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值