c++设计顺序表的顺序查找算法,将哨兵设在下标高端
时间: 2023-12-06 21:01:57 浏览: 43
C++设计顺序表的顺序查找算法,并将哨兵设在下标高端的程序代码如下:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义顺序表最大长度
struct SeqList {
int data[MAXSIZE];
int length;
};
// 顺序查找函数,将哨兵设在下标高端
int sequentialSearch(SeqList &L, int key) {
L.data[0] = key; // 将关键字存放在哨兵位置
int i = L.length; // 从顺序表的最后一个元素开始查找
while (L.data[i] != key) {
i--;
}
return i; // 返回查找结果
}
int main() {
SeqList L;
L.length = 5;
L.data[0] = 2;
L.data[1] = 4;
L.data[2] = 6;
L.data[3] = 8;
L.data[4] = 10;
int key = 6;
int pos = sequentialSearch(L, key);
if (pos == 0) {
cout << "查找失败!" << endl;
}
else {
cout << "查找成功!" << endl;
cout << "元素 " << key << " 的位置为 " << pos << endl;
}
return 0;
}
```
在上述代码中,我们定义了结构体 `SeqList` 来表示顺序表,其中包含一个数组 `data` 和一个整型变量 `length`,分别用来存放顺序表中的元素和元素个数。然后我们定义了一个顺序查找函数 `sequentialSearch`,它的参数包括要查找的顺序表 `L` 和关键字 `key`。函数中,我们将关键字存放在哨兵位置 `L.data[0]`,然后从顺序表的最后一个元素开始向前查找,直到找到关键字或者查找到哨兵位置。最后,函数返回查找结果,即关键字在顺序表中的位置。在主函数中,我们定义了一个顺序表 `L`,并初始化了其中的元素。然后我们调用 `sequentialSearch` 函数来查找关键字 `key=6`,并输出查找结果。
需要注意的是,在将关键字存放在哨兵位置后,我们从顺序表的最后一个元素开始查找,这样当查找到哨兵位置时,循环结束,函数返回查找失败。如果从顺序表的第一个元素开始查找,当查找到哨兵位置时,循环不会结束,会一直死循环下去。