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
}

//插入


//删除







阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭