DS哈希查找与增补

DS哈希查找与增补
题目描述
给出一个数据序列,建立哈希表,采用求余法作为哈希函数,模数为11,哈希冲突用链地址法和表尾插入
如果首次查找失败,就把数据插入到相应的位置中
实现哈希查找与增补功能
输入
第一行输入n,表示有n个数据
第二行输入n个数据,都是自然数且互不相同,数据之间用空格隔开
第三行输入t,表示要查找t个数据
从第四行起,每行输入一个要查找的数据,都是正整数
输出
每行输出对应数据的查找结果,每个结果表示为数据所在位置[0,11)和查找次数,中间用空格分开
样例输入
6
11 23 39 48 75 62
6
39
52
52
63
63
52
样例输出
6 1
error
8 1
error
8 2
8 1

#include
using namespace std;
struct Node
{
int data;
Node *next;
};
int main()
{
int key = 11;
Node *Array[11];
int n;
cin >> n;
int i;
for (i = 0; i < 11; i++)
{
Array[i] = new Node;
Array[i]->next = NULL;
Array[i]->data = -1;
}
for (i = 0; i < n; i++)
{
int yu, x;
cin >> x;
yu = x % key;
Node *q = Array[yu];
while (q->next)
q = q->next;
Node *p = new Node;
p->data = x;
p->next = NULL;
q->next = p;
}
int t;
cin >> t;
while (t–)
{
int x, yu;
cin >> x;
yu = x % key;
Node *q = Array[yu];
int count = 0;
while (1)
{
if (q->data == x)
{
cout << yu << " " << count << endl;
break;
}
if (q->next == NULL)
{
cout << “error” << endl;
Node *p = new Node;
p->data = x;
p->next = NULL;
q->next = p;
break;
}
count++;
q = q->next;
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值