/*树表查找*/
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
}
//插入
//删除
B_树
最新推荐文章于 2024-06-20 11:46:14 发布