C++采用结构体类型描述查找表的存储结构,编写具体函数实现查找表的顺序查找和折半查找等基本操作
时间: 2024-02-03 21:12:44 浏览: 85
以下是C++代码实现查找表的顺序查找和折半查找:
```cpp
#include <iostream>
using namespace std;
// 定义结构体类型
struct Table {
int key; // 关键字
string value; // 数据
};
// 顺序查找
int sequential_search(Table t[], int n, int key) {
for (int i = 0; i < n; i++) {
if (t[i].key == key) {
return i;
}
}
return -1; // 没找到返回-1
}
// 折半查找
int binary_search(Table t[], int n, int key) {
int low = 0, high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (t[mid].key == key) {
return mid;
}
else if (t[mid].key < key) {
low = mid + 1;
}
else {
high = mid - 1;
}
}
return -1; // 没找到返回-1
}
int main() {
Table t[] = {
{1, "apple"},
{3, "banana"},
{7, "orange"},
{9, "grape"}
};
int n = sizeof(t) / sizeof(Table);
// 顺序查找
int index = sequential_search(t, n, 7);
if (index != -1) {
cout << "sequential search result: " << t[index].value << endl;
}
else {
cout << "sequential search result: not found" << endl;
}
// 折半查找
index = binary_search(t, n, 3);
if (index != -1) {
cout << "binary search result: " << t[index].value << endl;
}
else {
cout << "binary search result: not found" << endl;
}
return 0;
}
```
以上代码中,我们定义了一个结构体类型Table,其中包括关键字key和数据value。然后实现了顺序查找函数sequential_search和折半查找函数binary_search。最后在main函数中,我们定义了一个查找表t,包含了4个元素,每个元素都是一个Table类型的结构体。然后分别使用顺序查找和折半查找函数查找关键字为7和3的元素,输出结果。
阅读全文