本文共 614 字,大约阅读时间需要 2 分钟。
给定一系列整型关键字和素数P,用除留余数法定义的散列函数将关键字映射到长度为P的散列表中。用线性探测法解决冲突。
输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。
在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。
4 524 15 61 88
4 0 1 3
散列表的应用加上线性探测法。。。
注意此题会有重复的元素输入,所以需要将某数的在散列表的位置记录下来。。
代码如下:
#include#include #include #include using namespace std;const int maxn=1e6;int n,p;int vis[maxn]; //判断散列表某点是否已经有元素int is[maxn]; //判断某一数字是否放入散列表//初始化void init (){ memset (vis,0,sizeof(vis)); memset (is,-1,sizeof(is));}int main(){ scanf("%d%d",&n,&p); init(); for (int i=0;i
转载地址:http://npaen.baihongyu.com/