91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

怎么使用c語言實現哈希表

小億
89
2024-02-23 10:20:42
欄目: 編程語言

實現哈希表的基本步驟如下:

  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碼之和來計算哈希值,并使用鏈表處理沖突。你可以根據自己的需求來修改和擴展這個示例。

0
黑水县| 南开区| 锦州市| 九龙坡区| 漳平市| 昌邑市| 广灵县| 蓝田县| 石屏县| 宜都市| 吴桥县| 黄浦区| 祁连县| 东莞市| 时尚| 常山县| 凌云县| 文化| 临猗县| 宜丰县| 旬阳县| 察哈| 平遥县| 景德镇市| 合作市| 紫云| 镇赉县| 邯郸市| 乌拉特后旗| 方城县| 陵水| 泽库县| 恭城| 镇巴县| 太康县| 图片| 罗江县| 博白县| 阳泉市| 宿迁市| 洮南市|