用结构体类型描述查找表的存储结构,并实现查找表的顺序查找和折半查找
时间: 2024-01-22 20:19:40 浏览: 74
我们可以使用结构体类型来描述查找表,其中包含两个成员:一个数组和数组的长度。具体实现如下:
```c
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
// 顺序查找
int SeqSearch(SeqList L, int key) {
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == key) {
return i;
}
}
return -1;
}
// 折半查找
int BinSearch(SeqList L, int key) {
int low = 0, high = L.length - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (L.data[mid] == key) {
return mid;
} else if (L.data[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
```
其中,`SeqSearch` 函数是顺序查找算法的实现,它遍历整个数组,查找关键字所在的位置;`BinSearch` 函数是折半查找算法的实现,它通过比较中间元素和关键字的大小关系,不断缩小查找范围,最终找到关键字所在的位置。
阅读全文