如何用C语言表示哈希表,请写出具体代码
时间: 2023-04-07 13:04:21 浏览: 86
可以使用结构体和指针实现哈希表,具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TABLE_SIZE 100
typedef struct node {
char* key;
char* value;
struct node* next;
} Node;
Node* table[TABLE_SIZE];
int hash(char* key) {
int sum = 0;
for (int i = 0; i < strlen(key); i++) {
sum += key[i];
}
return sum % TABLE_SIZE;
}
void put(char* key, char* value) {
int index = hash(key);
Node* node = (Node*)malloc(sizeof(Node));
node->key = key;
node->value = value;
node->next = NULL;
if (table[index] == NULL) {
table[index] = node;
} else {
Node* p = table[index];
while (p->next != NULL) {
p = p->next;
}
p->next = node;
}
}
char* get(char* key) {
int index = hash(key);
Node* p = table[index];
while (p != NULL) {
if (strcmp(p->key, key) == 0) {
return p->value;
}
p = p->next;
}
return NULL;
}
int main() {
put("apple", "苹果");
put("banana", "香蕉");
put("cherry", "樱桃");
printf("%s\n", get("apple"));
printf("%s\n", get("banana"));
printf("%s\n", get("cherry"));
return 0;
}
```
这个哈希表使用了链表解决冲突的问题,当哈希值相同时,将新的键值对添加到链表的末尾。put 函数用于添加键值对,get 函数用于根据键获取值。
阅读全文