用c写出散列查找的最简单代码实现,要求客户输入数组长度和数组内容,并在重要代码旁添加注释
时间: 2024-02-05 08:14:13 浏览: 60
c代码-创建一个函数 search_idx ,将和有 n 个元素的数组 n 中,与 key 相等的元素的下标,储存在数组 idx 中。并返回和 key 相等的元素的个数。
以下是用C语言实现散列查找的最简单代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 计算散列值
int hash(int key, int size) {
return key % size;
}
// 散列查找函数
int hashSearch(int arr[], int size, int key) {
int index = hash(key, size); // 计算散列值
while (arr[index] != key) { // 如果当前位置的值不是要查找的值
index = (index + 1) % size; // 尝试下一个位置
if (index == hash(key, size)) { // 如果已经回到起点,则说明没有找到
return -1;
}
}
return index; // 找到了,返回索引
}
int main() {
int size, arr[MAX_SIZE], key;
printf("请输入数组长度(不超过100):");
scanf("%d", &size);
printf("请输入数组元素:");
for (int i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
printf("请输入要查找的值:");
scanf("%d", &key);
int index = hashSearch(arr, size, key);
if (index == -1) {
printf("未找到 %d\n", key);
} else {
printf("找到了 %d,索引为 %d\n", key, index);
}
return 0;
}
```
代码的注释如下:
- `hash` 函数计算给定键值 `key` 的散列值,使用取模运算实现;
- `hashSearch` 函数对给定数组 `arr` 进行散列查找,使用线性探测法解决冲突;
- `main` 函数中,首先读入数组长度和数组元素,然后读入要查找的值,最后调用 `hashSearch` 函数进行查找。如果查找成功,输出找到的值和索引;否则输出未找到的提示信息。
阅读全文