c语言实现哈希表的查找
时间: 2023-09-22 19:11:14 浏览: 107
哈希表是一种利用哈希函数进行快速查找的数据结构。C语言可以通过数组和指针实现哈希表。
首先需要定义一个哈希函数,将关键字转换成哈希表的位置。可以使用简单的取模运算,将关键字的值除以哈希表大小取余数得到哈希表位置。
例如,哈希表大小为10,关键字为20,则哈希表位置为20%10=2。
接下来,定义一个结构体来表示哈希表中的每个元素,包括关键字和值。
```c
struct hash_element {
int key;
int value;
};
```
然后,定义一个哈希表数组,将每个元素插入到哈希表中。如果哈希表位置已经被占用,可以使用链表来解决冲突。
```c
#define HASH_SIZE 10
struct hash_element *hash_table[HASH_SIZE];
void insert(int key, int value) {
int index = key % HASH_SIZE;
struct hash_element *element = malloc(sizeof(struct hash_element));
element->key = key;
element->value = value;
if (hash_table[index] == NULL) {
hash_table[index] = element;
} else {
struct hash_element *p = hash_table[index];
while (p->next != NULL) {
p = p->next;
}
p->next = element;
}
}
int search(int key) {
int index = key % HASH_SIZE;
struct hash_element *p = hash_table[index];
while (p != NULL) {
if (p->key == key) {
return p->value;
}
p = p->next;
}
return -1;
}
```
这里的insert函数将关键字和值封装成一个结构体,然后根据哈希函数计算出哈希表位置。如果该位置为空,直接插入元素;否则,遍历链表直到找到空位置插入。
search函数根据哈希函数计算出哈希表位置,然后遍历链表查找关键字。
以上是一个简单的哈希表实现,可以根据实际需求进行改进。
阅读全文