怎么使用c语言实现哈希表

avatar
作者
猴君
阅读量:2

实现哈希表的基本步骤如下:

  1. 定义哈希表的数据结构:包括哈希表大小、桶的数量、桶的结构等。
  2. 实现哈希函数:将键映射到桶的索引。
  3. 实现哈希表的操作函数:包括插入、查找、删除等操作。
  4. 处理冲突:当多个键映射到同一个桶时,需要使用链表、开放寻址等方法来处理冲突。

以下是一个简单的使用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码之和来计算哈希值,并使用链表处理冲突。你可以根据自己的需求来修改和扩展这个示例。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!