折叠法哈希函数代码C语言
时间: 2023-09-30 18:10:01 浏览: 180
以下是一个简单的折叠哈希函数的C语言实现:
```c
#include <stdio.h>
#include <string.h>
unsigned int folding_hash(char* str, int table_size) {
unsigned int hash_val = 0;
int len = strlen(str);
int i;
for (i = 0; i < len; i += 4) {
hash_val += str[i];
hash_val = hash_val << 8;
if (i + 1 < len) {
hash_val += str[i + 1];
hash_val = hash_val << 8;
}
if (i + 2 < len) {
hash_val += str[i + 2];
hash_val = hash_val << 8;
}
if (i + 3 < len) {
hash_val += str[i + 3];
hash_val = hash_val << 8;
}
}
return hash_val % table_size;
}
int main() {
char* str = "hello world";
int table_size = 100;
printf("%d\n", folding_hash(str, table_size));
return 0;
}
```
该函数将输入字符串分成4个字符块,并将它们相加,然后使用模运算来返回哈希表中的索引位置。如果输入字符串的长度不是4的倍数,则最后一块可能短于4个字符。
阅读全文