概念:哈希表是一种数据结构,它通过将键映射到数组的某个位置来存储和检索值。
第一步,首先定义节点
typedef struct Node {
char *key;
int value;
struct Node *next;
} Node;
这里,我定义的键是字符,value是整数。
第二步,自定义hash算法
int hash(char *key) {
int sum = 0;
for (int i = 0; i < strlen(key); i++) {
sum += key[i];
}
return sum;
}
这里的哈希函数是一个简单的求和函数,返回的是键中的每个字符的ASCII值相加的和
第三步,创建节点
Node *createNode(char *key, int value) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->key = strdup(key);
newNode->value = value;
newNode->next = NULL;
return newNode;
}
strdup() 函数将参数 key 指向的字符串复制到一个字符串指针上去,这个字符串指针事先可以没被初始化。在复制时,strdup() 会给这个指针分配空间,使用 malloc() 函数进行分配,如果不再使用这个指针,相应的用 free()