用线性探测法的插入和查找的具体代码C语言
时间: 2024-05-12 12:15:19 浏览: 10
线性探测法是一种简单的散列表解决方案,其基本思想是当发生哈希冲突时,依次向下探测直到找到空槽或者达到散列表的末尾。下面是线性探测法的插入和查找的具体代码实现:
插入操作:
```c
int hash_insert(int key, int val, int *hash_table, int size) {
int index = key % size;
int i = index;
while (hash_table[i] != -1 && hash_table[i] != key) {
i = (i + 1) % size;
if (i == index) {
return -1; // 散列表已满,无法插入
}
}
hash_table[i] = key;
hash_table[size + i] = val;
return i;
}
```
其中,`key`为关键字,`val`为值,`hash_table`为散列表,`size`为散列表大小。
查找操作:
```c
int hash_search(int key, int *hash_table, int size) {
int index = key % size;
int i = index;
while (hash_table[i] != -1) {
if (hash_table[i] == key) {
return hash_table[size + i];
}
i = (i + 1) % size;
if (i == index) {
break;
}
}
return -1; // 未找到
}
```
其中,`key`为要查找的关键字,`hash_table`为散列表,`size`为散列表大小。如果找到了关键字,则返回对应的值,否则返回-1。
需要注意的是,散列表的初始化需要将`hash_table`数组全部置为-1,表示散列表中没有任何数据。