写一段C语言代码,用哈希表查找关键字
时间: 2024-09-30 15:12:00 浏览: 38
在C语言中,通常我们不会直接使用内置的哈希表数据结构,因为C标准库并未提供这样的功能。但是,我们可以使用数组或者自定义的链表结构模拟哈希表的行为。这里是一个简单的例子,使用数组来实现关键字查找,通过取关键字的哈希值作为索引来定位元素:
```c
#include <stdio.h>
#include <string.h>
#define TABLE_SIZE 10 // 假设我们有一个大小为10的哈希表
typedef struct {
char* keyword;
int value; // 这里只是一个示例,实际可以换成任何值
} Item;
// 哈希函数,这里简单地取字符串的长度作为哈希值
int hash(char* keyword) {
return strlen(keyword);
}
// 查找关键字在哈希表中的位置
int find(char* keyword, Item table[TABLE_SIZE]) {
int index = hash(keyword) % TABLE_SIZE;
if (table[index].keyword && strcmp(table[index].keyword, keyword) == 0) {
return table[index].value;
}
return -1; // 如果找不到关键词,则返回-1
}
int main() {
Item items[TABLE_SIZE] = {{"apple", 5}, {"banana", 7}, {"orange", 3}};
char search_keyword[] = "banana";
int value = find(search_keyword, items);
if (value != -1) {
printf("The value for '%s' is %d\n", search_keyword, value);
} else {
printf("Keyword not found.\n");
}
return 0;
}
```
在这个例子中,我们创建了一个简单的哈希表`items`,然后使用`find`函数查找给定的关键字。如果找到,它将返回对应的价值;否则,返回-1表示未找到。
阅读全文