哈希表应用代码
时间: 2023-08-15 18:13:21 浏览: 78
以下是一个哈希表的应用代码,具体实现方式和语言可能有所不同,这里提供一个伪代码的示例:
```
// 定义哈希表结构
struct HashTable {
int size; // 哈希表大小
List *table; // 存储链表的数组
};
// 初始化哈希表
HashTable *hash_init(int size) {
HashTable *hash = malloc(sizeof(HashTable));
hash->size = size;
hash->table = calloc(size, sizeof(List));
return hash;
}
// 计算哈希值
int hash_func(char *key) {
int hash = 0;
for (int i = 0; key[i]; i++) {
hash = (hash << 5) + hash + key[i];
}
return hash;
}
// 在哈希表中插入键值对
void hash_insert(HashTable *hash, char *key, int value) {
int index = hash_func(key) % hash->size;
List *list = &hash->table[index];
list_add(list, key, value);
}
// 在哈希表中查找键对应的值
int hash_lookup(HashTable *hash, char *key) {
int index = hash_func(key) % hash->size;
List *list = &hash->table[index];
ListNode *node = list_find(list, key);
if (node) {
return node->value;
} else {
return -1; // 表示没找到
}
}
// 销毁哈希表
void hash_destroy(HashTable *hash) {
for (int i = 0; i < hash->size; i++) {
list_destroy(&hash->table[i]);
}
free(hash->table);
free(hash);
}
```
在这个示例中,我们使用链表来解决哈希冲突。`hash_func` 函数用于计算字符串的哈希值,通过取模运算将其映射到哈希表的某个位置。`hash_insert` 函数用于在哈希表中插入键值对,如果发生了哈希冲突,则通过链表解决。`hash_lookup` 函数用于查找键对应的值,如果没找到则返回 -1。最后,`hash_destroy` 函数用于销毁哈希表。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)