用c写出散列查找的最简单代码实现,并在重要代码旁添加注释
时间: 2024-02-05 21:13:19 浏览: 68
以下是一个简单的散列查找的C语言代码实现:
```c
#include <stdio.h>
#define TABLE_SIZE 10
// 定义散列表节点结构体
typedef struct node {
int value;
struct node *next;
} node;
// 计算哈希值
int hash(int value) {
return value % TABLE_SIZE;
}
// 插入节点到散列表中
void insert(node **table, int value) {
// 计算哈希值
int index = hash(value);
// 创建新节点
node *new_node = (node *) malloc(sizeof(node));
new_node->value = value;
new_node->next = NULL;
// 将新节点插入到散列表中
if (table[index] == NULL) {
table[index] = new_node;
} else {
node *current = table[index];
while (current->next != NULL) {
current = current->next;
}
current->next = new_node;
}
}
// 查找节点
node *search(node **table, int value) {
// 计算哈希值
int index = hash(value);
// 遍历链表查找节点
node *current = table[index];
while (current != NULL) {
if (current->value == value) {
return current;
}
current = current->next;
}
return NULL;
}
int main() {
// 初始化散列表
node *table[TABLE_SIZE] = { NULL };
// 插入节点
insert(table, 5);
insert(table, 10);
insert(table, 15);
// 查找节点
node *result = search(table, 10);
if (result != NULL) {
printf("Found node with value %d\n", result->value);
} else {
printf("Node not found\n");
}
return 0;
}
```
代码中注释解释了每个函数和变量的作用,让代码更易于理解。通过计算哈希值,将节点插入到散列表中,并通过遍历链表查找节点。
阅读全文