C. DS哈希查找--链地址法(表头插入) 时间限制 1s 内存限制 128MB 题目描述 给出一个数据序列,建立哈希表,采用求余法作为哈希函数,模数为11,哈希冲突用链地址法和表头插入 如果首次查找失败,就把数据插入到相应的位置中 实现哈希查找功能 输入 第一行输入n,表示有n个数据 第二行输入n个数据,都是自然数且互不相同,数据之间用空格隔开 第三行输入t,表示要查找t个数据 从第四行起,每行输入一个要查找的数据,都是正整数 输出 每行输出对应数据的查找结果
时间: 2023-06-27 14:01:08 浏览: 88
```python
n = int(input())
data = list(map(int, input().split()))
hash_table = [[] for _ in range(11)] # 初始化哈希表
for num in data:
index = num % 11 # 求余得到哈希表下标
hash_table[index].insert(0, num) # 表头插入
t = int(input())
for i in range(t):
target = int(input())
index = target % 11
if target in hash_table[index]: # 直接查找成功
print('yes')
else:
hash_table[index].insert(0, target) # 插入到相应位置
print('no')
```
相关问题
DS哈希查找--链地址法(表头插入) 时间限制 1s 内存限制 128MB 题目描述 给出一个数据序列,建立哈希表,采用求余法作为哈希函数,模数为11,哈希冲突用链地址法和表头插入 如果首次查找失败,就把数据插入到相应的位置中 实现哈希查找功能 输入 第一行输入n,表示有n个数据 第二行输入n个数据,都是自然数且互不相同,数据之间用空格隔开 第三行输入t,表示要查找t个数据 从第四行起,每行输入一个要查找的数据,都是正整数 输出 每行输出对应数据的查找结果 用c++实现 并且每一行输出查找的次数 失败则输出error
这道题目需要我们实现哈希表的基本操作:插入和查找。我们可以使用链地址法(也叫拉链法)来解决哈希冲突。
具体步骤如下:
1. 定义一个结构体 `Node`,表示哈希表中的节点。每个节点包含两个成员变量:`data` 存储数据,`next` 指向下一个节点。这里我们使用单链表来实现链地址法。
2. 定义一个数组 `hashTable`,长度为 11。我们将每个数据通过哈希函数映射到数组中的某个位置,如果该位置已经有节点,则将新节点插入到链表的头部。
3. 实现插入操作。对于一个要插入的数据,先计算其哈希值,然后将其插入到对应位置的链表头部。
4. 实现查找操作。对于一个要查找的数据,先计算其哈希值,然后遍历对应位置的链表,查找是否存在该数据。
下面是代码实现:
阅读全文