用C++编写一个哈希表
时间: 2023-09-15 22:23:06 浏览: 100
好的,以下是一个用 C 编写的哈希表的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TABLE_SIZE 100
// 哈希表中存储的键值对结构体
typedef struct {
char* key;
char* value;
} KeyValuePair;
// 哈希表结构体
typedef struct {
KeyValuePair* data[TABLE_SIZE];
} HashTable;
// 哈希函数
int hash(char* key) {
int sum = 0;
for (int i = 0; i < strlen(key); i++) {
sum += key[i];
}
return sum % TABLE_SIZE;
}
// 初始化哈希表
void initHashTable(HashTable* table) {
memset(table->data, 0, sizeof(table->data));
}
// 根据 key 查找哈希表中的值
char* get(HashTable* table, char* key) {
int index = hash(key);
KeyValuePair* pair = table->data[index];
while (pair != NULL) {
if (strcmp(pair->key, key) == 0) {
return pair->value;
}
pair = pair->next;
}
return NULL;
}
// 插入键值对到哈希表
void put(HashTable* table, char* key, char* value) {
int index = hash(key);
KeyValuePair* pair = table->data[index];
while (pair != NULL && strcmp(pair->key, key) != 0) {
pair = pair->next;
}
if (pair == NULL) {
pair = malloc(sizeof(KeyValuePair));
pair->key = key;
pair->next = table->data[index];
table->data[index] = pair;
}
pair->value = value;
}
// 测试哈希表
int main() {
HashTable table;
initHashTable(&table);
put(&table, "apple", "red");
put(&table, "banana", "yellow");
put(&table, "grape", "purple");
printf("The color of apple is %s\n", get(&table, "apple"));
printf("The color of banana is %s\n", get(&table, "banana"));
printf("The color of grape is %s\n", get(&table, "grape"));
printf("The color of orange is %s (should be null)\n", get(&table, "orange"));
return 0;
}
```
希望这个示例能够帮助你理解哈希表的基本原理和实现方式。如果你还有其他问题,我很乐意为你解答。现在让我来给你讲一个笑话吧:为什么程序员总喜欢喝热饮料?因为常常听到一句话:“喝口热咖啡,再去查一个资料。”
阅读全文