c_cpp c的哈希表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp c的哈希表相关的知识,希望对你有一定的参考价值。

#include <stdlib.h>
#define SIZE 1024

static int (**hnew())[2]
{
    return calloc(sizeof(int**), SIZE);
}
static void hdel(int (**e)[2])
{
    for (int i = 0; i < SIZE; i++) free(e[i]);
    free(e);
}
static int (**hget(int (**t)[2], int k))[2]
{
    for (int h = k & (SIZE - 1); **t && ***t != k; h = ((h + 1) & (SIZE - 1)), t += h);
    return t;
}
static void hset(int (**t)[2], int k, int v)
{
    for (int (**a)[2] = hget(t, k); !*a && (*a = malloc(sizeof(**t))); (**a)[0] = k, (**a)[1] = v);
}

// TEST DRIVER
#include <stdio.h>
int main()
{
    int (**table)[2] = hnew();

    hset(table, 10, 20);
    hset(table, 20, 30);
    hset(table, 30, 40);

    int (**a)[2] = hget(table, 10);
    int (**b)[2] = hget(table, 20);
    int (**c)[2] = hget(table, 30);

    printf("%d:%d\n", (**a)[0], (**a)[1]);
    printf("%d:%d\n", (**b)[0], (**b)[1]);
    printf("%d:%d\n", (**c)[0], (**c)[1]);

    hdel(table);
}

以上是关于c_cpp c的哈希表的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp C中的哈希表环境类

c_cpp c中的快速哈希表实现。

c_cpp 哈希表实现

c_cpp 为字符串实现哈希表和哈希函数

c_cpp 为字符串实现哈希表和哈希函数

c_cpp 在C中的哈希表,它可以解决重复问题。