c语言查找并输出散列表中一个数的位置代码
时间: 2024-11-12 07:38:33 浏览: 7
c代码-散列表练习题:电话狂人
在C语言中,如果你有一个数组或者结构体数组充当散列表(哈希表),通常会通过哈希函数将元素映射到数组的索引位置。这里是一个简单的例子,假设我们有一个整数数组作为散列表,并且要查找给定的值:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设数组大小、负载因子和哈希函数
#define TABLE_SIZE 100
#define LOAD_FACTOR 0.75
// 哈希函数示例,实际应用可能更复杂
int hash(int key) {
return key % TABLE_SIZE;
}
// 检查元素是否存在于散列表中
int search(int *hash_table, int size, int key) {
int index = hash(key);
if (hash_table[index] != NULL && hash_table[index] == key) {
printf("找到 %d 的位置: %d\n", key, index);
return 1; // 如果找到返回1
} else {
return 0; // 如果未找到返回0
}
}
int main() {
// 初始化一个散列表
int *hash_table = malloc(sizeof(int) * TABLE_SIZE);
for (int i = 0; i < TABLE_SIZE; i++) {
hash_table[i] = NULL;
}
// 插入一些数据(假设已插入)
hash_table[hash(42)] = 42;
hash_table[hash(1337)] = 1337;
// 查找特定数值
int found = search(hash_table, TABLE_SIZE, 42);
free(hash_table); // 释放内存
return 0;
}
```
这个示例中,`search()` 函数接收散列表、数组大小和要查找的键。它首先计算键的哈希值,然后检查对应索引处的元素是否等于键。如果相等,则返回索引,否则返回0表示未找到。
阅读全文