下面是一个简单的C语言实现的hash表示例:
#include#include #include #define SIZE 100 typedef struct Node { char key[50]; int value; struct Node* next; } Node; Node* hashtable[SIZE]; unsigned int hash(const char* key) { unsigned int hash = 0; for (int i = 0; key[i] != '\0'; i++) { hash = hash * 31 + key[i]; } return hash % SIZE; } void insert(const char* key, int value) { unsigned int index = hash(key); Node* newNode = (Node*)malloc(sizeof(Node)); strcpy(newNode->key, key); newNode->value = https://www.yisu.com/ask/value;>next = hashtable[index]; hashtable[index] = newNode; } int get(const char* key) { unsigned int index = hash(key); Node* current = hashtable[index]; while (current != NULL) { if (strcmp(current->key, key) == 0) { return current->value; } current = current->next; } return -1; } int main() { insert("apple", 5); insert("banana", 10); printf("Value of apple is %d\n", get("apple")); printf("Value of banana is %d\n", get("banana")); return 0; }
这个例子中,我们使用一个固定大小的数组hashtable
来保存hash表的数据。我们使用一个简单的hash函数来计算key的hash值,并用该值来确定key在数组中的位置。在插入数据时,我们首先根据key计算hash值,然后创建一个新的节点,并将其插入到对应位置的链表中。在查找数据时,我们同样根据key计算hash值,然后遍历对应位置的链表,找到对应的节点并返回其值。