Status Search_Seq(SSTable ST,KeyType key) {//顺序查找 int i; for(i=ST.length;i>=1;--i) if(ST.R[i].key==key) { return ST.length-i; cout<<"该整数的下标值为:"<<ST.length-i; } else return 0; }没有值
时间: 2023-06-22 14:39:19 浏览: 97
在这段代码中,你使用了 if 和 else 语句来判断顺序表中是否存在 key,但是这会导致函数在找到一个匹配的 key 后就直接返回了。因此,如果顺序表中存在多个匹配的 key,函数并不能正确输出所有匹配的结果。
为了解决这个问题,你可以将输出语句放在 if 条件判断语句的外面,这样就可以在找到所有匹配的 key 后,一次性输出它们的下标值了。同时,你需要在找到匹配的 key 时,将下标值返回,以便后续的处理。
修改后的代码如下所示:
```
Status Search_Seq(SSTable ST, KeyType key) {
int i, count = 0;
for (i = ST.length; i >= 1; --i) {
if (ST.R[i].key == key) {
// 找到一个匹配的 key,增加计数器
count++;
}
}
if (count == 0) {
// 没有找到匹配的 key,返回 0
return 0;
} else {
// 找到了匹配的 key,输出它们的下标值
cout << "匹配的整数个数为:" << count << endl;
for (i = ST.length; i >= 1; --i) {
if (ST.R[i].key == key) {
// 找到一个匹配的 key,输出它的下标值
cout << "该整数的下标值为:" << ST.length - i << endl;
}
}
// 返回匹配的整数个数
return count;
}
}
```
这样修改后,函数就可以正确输出所有匹配的 key 的下标值了。
阅读全文