c语言建立哈希表的结构体
时间: 2024-11-18 08:18:39 浏览: 9
哈希表实验C语言版实现
5星 · 资源好评率100%
在C语言中,构建哈希表通常涉及到自定义数据结构,包括一个数组作为底层存储,再加上用于哈希计算的函数以及处理冲突(当两个键映射到相同的索引位置)的策略。下面是一个简单的示例,展示了如何创建一个基础的哈希表结构:
```c
#include <stdio.h>
#include <stdlib.h>
// 哈希表元素类型,包含键值对
typedef struct {
char* key; // 键,字符串类型
int value; // 对应的值,整型
} HashTableEntry;
// 哈希表结构体,使用固定大小的数组存放元素
#define TABLE_SIZE 100
typedef struct {
HashTableEntry table[TABLE_SIZE];
int count; // 当前元素数量
} HashTable;
// 计算哈希值的简单函数,这里使用取模运算简化演示
unsigned int hash_func(const char* key, unsigned int table_size) {
unsigned int hash = 5381;
for (int i = 0; *key != '\0'; i++) {
hash = ((hash << 5) + hash) + (*key++);
}
return hash % table_size;
}
// 插入键值对到哈希表
void insert(HashTable* h, const char* key, int value) {
unsigned int index = hash_func(key, TABLE_SIZE);
while (h->table[index].key) { // 检查是否有冲突
index = (index + 1) % TABLE_SIZE;
}
h->table[index].key = strdup(key); // 复制键
h->table[index].value = value;
h->count++;
}
// 主函数展示哈希表的基本用法
int main() {
HashTable my_table;
insert(&my_table, "test", 42);
// ... 其他操作...
return 0;
}
```
在这个例子中,我们首先定义了一个`HashTableEntry`结构体表示每个元素,然后创建了`HashTable`结构体,它是一个数组,用于存储键值对。`hash_func`用于将键转换为数组索引,`insert`函数则是插入操作。
阅读全文