实现哈希表的基本步骤如下:
以下是一个简单的使用C语言实现哈希表的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TABLE_SIZE 10
typedef struct Node {
char* key;
int value;
struct Node* next;
} Node;
Node* table[TABLE_SIZE];
int hash_function(char* key) {
int hash = 0;
for (int i = 0; i < strlen(key); i++) {
hash += key[i];
}
return hash % TABLE_SIZE;
}
void insert(char* key, int value) {
int index = hash_function(key);
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->key = key;
new_node->value = value;
new_node->next = table[index];
table[index] = new_node;
}
int search(char* key) {
int index = hash_function(key);
Node* current = table[index];
while (current != NULL) {
if (strcmp(current->key, key) == 0) {
return current->value;
}
current = current->next;
}
return -1; // key not found
}
void delete(char* key) {
int index = hash_function(key);
Node* current = table[index];
Node* prev = NULL;
while (current != NULL) {
if (strcmp(current->key, key) == 0) {
if (prev == NULL) {
table[index] = current->next;
} else {
prev->next = current->next;
}
free(current);
return;
}
prev = current;
current = current->next;
}
}
int main() {
insert("apple", 5);
insert("banana", 10);
printf("Value of apple: %d\n", search("apple"));
printf("Value of banana: %d\n", search("banana"));
delete("apple");
printf("Value of apple after deletion: %d\n", search("apple"));
return 0;
}
上面的代码实现了一个简单的哈希表,包括插入、查找、删除操作。在这个示例中,哈希函数使用字符的ASCII码之和来计算哈希值,并使用链表处理冲突。你可以根据自己的需求来修改和扩展这个示例。