根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。
来源:互联网 发布:c语言是开源的吗 编辑:程序博客网 时间:2024/06/01 08:19
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int n,p,key,c,id,i,j;
int hash[1010],a[1010];
while(cin>>n>>p)
{
c=0;
memset(hash,0,sizeof(hash));
for(i=0;i<n;i++)
{
cin>>key;
id=key%p;
if(hash[id]==0)
{
hash[id]=key;
a[c++]=id;
//cout<<"a[c-1]"<< a[c-1]<<endl;
}
else
{
j=-1;
if(hash[id]==key)//余数相同并且数据是一样的
{
a[c++]=id;
}
if(hash[id]!=key)//余数相同但是不是同一个数据
{
while(hash[(id+1)%p]!=0&&hash[(id+1)%p]!=key)
{
id++;//直到找到表中没有存储数据的位置
}
hash[(id+1)%p]=key;
a[c++]=(id+1)%p;
}
}
}
for(i=0;i<c;i++)
{
if(i==0)
cout<<a[i];
else
cout<<" "<<a[i];
}
cout<<endl;
}
#include<string.h>
using namespace std;
int main()
{
int n,p,key,c,id,i,j;
int hash[1010],a[1010];
while(cin>>n>>p)
{
c=0;
memset(hash,0,sizeof(hash));
for(i=0;i<n;i++)
{
cin>>key;
id=key%p;
if(hash[id]==0)
{
hash[id]=key;
a[c++]=id;
//cout<<"a[c-1]"<< a[c-1]<<endl;
}
else
{
j=-1;
if(hash[id]==key)//余数相同并且数据是一样的
{
a[c++]=id;
}
if(hash[id]!=key)//余数相同但是不是同一个数据
{
while(hash[(id+1)%p]!=0&&hash[(id+1)%p]!=key)
{
id++;//直到找到表中没有存储数据的位置
}
hash[(id+1)%p]=key;
a[c++]=(id+1)%p;
}
}
}
for(i=0;i<c;i++)
{
if(i==0)
cout<<a[i];
else
cout<<" "<<a[i];
}
cout<<endl;
}
}
Problem Description
根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。
Input
连续输入多组数据,每组输入数据第一行为两个正整数N(N <= 1500)和p(p >= N的最小素数),N是关键字总数,p是hash表长度,第2行给出N个正整数关键字,数字间以空格间隔。
Output
输出每个关键字在hash表中的位置,以空格间隔。注意最后一个数字后面不要有空格。
Example Input
5 521 21 21 21 214 524 15 61 884 524 39 61 155 524 39 61 15 39
Example Output
1 1 1 1 14 0 1 34 0 1 24 0 1 2 0
阅读全文
0 0
- 根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。
- 【除留余数法定义hash函数+线性探测法解决hash冲突】数据结构实验之查找七:线性之哈希表
- 【除留余数法定义hash函数+平方探测法解决hash冲突】数据结构实验之查找五:平方之哈希表
- 数据结构 c语言实现哈希(hash)表查找 除留余数法构建hash函数开放定值法线性探测处理冲突
- 考虑一个特殊的hash函数h,能将任一字符串hash成一个整数k,其概率p(k) = 2^(-k),k = 1,2,3,4,....对于一个未知大小的字符串集合S中的每一个元素取hash值所组成的集
- 运用函数指针和STL的Map实现关键字key与成员函数的映射
- 素数的充要条件的证明 (试证明(p-1)!模p的余数是p-1的充要条件是p为质数)
- IPC-- key关键字的产生 ftok函数
- P,*P和&P的区别
- mysql关键字key的转义
- mysql关键字key的转义
- Hash解决冲突之线性探测
- 4C的练习5-39 整型关键字的散列映射 <线性探测法>
- Key关键字
- Lisp语言:如何在hash table中使用字符串作为关键字(key)?
- hash线性探测开放定址法解决冲突
- vue-cli 接口返回数据key为id 不能被iview的表格渲染,关键字id冲突,更改key值
- *p++和*++p的区别
- return、return true和return false
- CentOS7 安装 zabbix-agentd
- CocosCreator 怎么添加JSB绑定的C++类到场景中
- Lisp运行程序
- Python之路【第5天】
- 根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。
- java.sql.SQLException: Value '0000-00-00 ' can not be represented as java.sql.Timest
- nginx负载均衡和反向代理
- 机房之下机窗体
- spring定时任务.线程池,自定义多线程配置
- 获取img标签中的src内容
- mysql主从复制和mycat读写分离
- 习近平:实施国家大数据战略,加快建设数字中国(万字长文解读)
- 数据结构实验之查找一:二叉排序树