本文共 629 字,大约阅读时间需要 2 分钟。
给定一系列整型关键字和素数P,用除留余数法定义的散列函数将关键字映射到长度为P的散列表中。用线性探测法解决冲突。
输入格式:
输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。输出格式:
在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。输入样例:
4 5 24 15 61 88 输出样例: 4 0 1 3#include#include #define N 2000 typedef struct HashMap{ int loc; int value;} Hash;int hash( int x, int p ) // 计算哈希值{ return (x%p);} int main(){ int n, p; scanf("%d %d", &n, &p); // flag[]用于标记地址是否已用,index[]用于按输入顺序记录地址 int flag[N], index[N]; int i, j; /* 初始化两个数组的值为 0 */ memset(flag, 0, sizeof(flag)); memset(index, 0, sizeof(index)); int x; Hash h[N]; for( i=0; i
转载地址:http://floe.baihongyu.com/