📄 algo0913.cpp
字号:
void ShowBTNode(BTree p) { //display the BTnode
printf("(");
for(int i=1; i<=p->keynum; i++)
printf("%3d", p->key[i]);
printf(" )");
}
int Search(BTree p, KeyType K) {
for(int i=0; i < p->keynum && p->key[i+1] <= K; i++);
return i;
}
Result SearchBTree(BTree T, KeyType K, int f) { // 算法9.13
// 在m阶B树T上查找关键字K,返回结果(pt,i,tag)
BTree p, q;
int found, i, j=0;
Result R;
p = T; q = NULL; found = FALSE; i = 0;
// 初始化,p指向待查结点,q指向p的双亲
while (p && !found) {
if (f) {
if (j) printf(" --> ");
ShowBTNode(p);
}
i = Search(p, K); // 在p->key[1..keynum]中查找i,
// 使得:p->key[i]<=K<p->key[i+1]
if (i>0 && p->key[i]==K) found = TRUE; // 找到待查关键字
else { q = p; p = p->ptr[i]; }
j++;
}
if (found) { // 查找成功
R.pt = p; R.i = i; R.tag = 1;
} else { // 查找不成功
R.pt = q; R.i = i; R.tag = 0;
}
return R; // 返回结果信息: K的位置(或插入位置)
} // SearchBTree
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -