第一行只包含一个整数n,表示哈希表的大小。 随后为哈希表的操作系列,每个操作一行,具体见样例。 输出 如果输入为"insert k",如果表中k已经存在则输出"k is already existed in hash table",否则将k插入后什么也不输出。 如果输入为"search k ",如果表中k已经存在则输出"k is found",否则输出 "k is not found"。 如果输入为"delete k",如果表中k已经存在,则删除后则输出整个表,否则输出"k is not existed in hash table"。 如果输入为"print",则输出整个表。
时间: 2023-07-16 13:13:14 浏览: 33
这是一道关于哈希表的算法题,我们可以使用数组来实现哈希表。以下是 Python 的实现代码:
```python
hash_table = [-1] * 100000 # 初始化哈希表,长度为 100000
def hash_func(key):
"""
哈希函数,将 key 映射为哈希表的下标
"""
return key % len(hash_table)
def insert(key):
"""
插入操作
"""
idx = hash_func(key)
if hash_table[idx] == key:
print(f"{key} is already existed in hash table")
else:
hash_table[idx] = key
def search(key):
"""
查找操作
"""
idx = hash_func(key)
if hash_table[idx] == key:
print(f"{key} is found")
else:
print(f"{key} is not found")
def delete(key):
"""
删除操作
"""
idx = hash_func(key)
if hash_table[idx] == key:
hash_table[idx] = -1
print_table()
else:
print(f"{key} is not existed in hash table")
def print_table():
"""
输出整个表
"""
for i, val in enumerate(hash_table):
if val != -1:
print(f"{i}: {val}")
```
对于输入的操作序列,我们可以使用 Python 的 `input()` 函数来读取每一行,然后根据空格分割并调用对应的函数。具体代码如下:
```python
n = int(input()) # 哈希表大小
for i in range(n):
op, k = input().split() # 操作和键值
k = int(k) # 将键值转为整数
if op == "insert":
insert(k)
elif op == "search":
search(k)
elif op == "delete":
delete(k)
elif op == "print":
print_table()
```
以上代码实现了输入操作序列并调用对应函数的功能,完整代码如下: