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

溫馨提示×

如何在C語言中使用hash表

小樊
81
2024-08-08 03:56:51
欄目: 編程語言

在C語言中實現hash表需要先定義一個結構體來表示hash表的節點,然后定義一個數組來存儲這些節點,每個節點包含一個鍵值對,以及指向下一個節點的指針。下面是一個簡單的示例代碼:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TABLE_SIZE 100

typedef struct Node {
    char key[100];
    int value;
    struct Node* next;
} Node;

Node* hashTable[TABLE_SIZE];

unsigned int hash(const char* key) {
    unsigned int hash = 0;
    while (*key) {
        hash = (hash * 31) + *key++;
    }
    return hash % TABLE_SIZE;
}

void insert(const char* key, int value) {
    unsigned int index = hash(key);
    Node* newNode = (Node*)malloc(sizeof(Node));
    strcpy(newNode->key, key);
    newNode->value = value;
    newNode->next = hashTable[index];
    hashTable[index] = newNode;
}

int get(const char* key) {
    unsigned int index = hash(key);
    Node* current = hashTable[index];
    while (current != NULL) {
        if (strcmp(current->key, key) == 0) {
            return current->value;
        }
        current = current->next;
    }
    return -1;
}

int main() {
    insert("apple", 5);
    insert("orange", 10);
    insert("banana", 3);

    printf("apple: %d\n", get("apple"));
    printf("orange: %d\n", get("orange"));
    printf("banana: %d\n", get("banana"));
    printf("grape: %d\n", get("grape"));

    return 0;
}

在這個示例中,我們定義了一個 hash 函數來計算鍵的哈希值,并使用鏈地址法來解決哈希沖突。我們可以通過 insert 函數來插入鍵值對,通過 get 函數來獲取鍵對應的值。在 main 函數中演示了如何使用這個簡單的hash表。

0
理塘县| 遂平县| 临澧县| 台东县| 沙雅县| 平凉市| 阿荣旗| 同德县| 凤山县| 响水县| 拜城县| 枣阳市| 措勤县| 邳州市| 慈利县| 永仁县| 乐都县| 汤原县| 淮安市| 汉源县| 工布江达县| 安达市| 洞头县| 法库县| 新泰市| 隆回县| 洪江市| 永丰县| 利辛县| 论坛| 阳高县| 闻喜县| 额敏县| 玛曲县| 应城市| 珲春市| 芮城县| 都匀市| 朝阳县| 隆回县| 巴彦淖尔市|