整型关键字的散列映射
数据结构实验五的编程题,典型的例题
给定一系列整型关键字和素数P,用除留余数法定义的散列函数H(Key)=Key将关键字映射到长度为P的散列表中。用线性探测法解决冲突。
输入格式:
输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。
输出格式:
在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。
输入样例:
4 5
24 15 61 88
输出样例:
4 0 1 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i, n, p, x, k; scanf( "%d %d" , &n, &p); int *s = ( int *)malloc( sizeof ( int )*p); memset(s, 0, sizeof ( int )*p); //初始化动态数组s[] for (i = 0; i < n; i ++) { scanf( "%d" , &x); k = x % p; if (s[k] == 0) { //如果此位置为空,直接存放 s[k] = x; } else { //否则 while (s[k] != 0 && s[k] != x) { //依次往后寻找,直到找到空位,或者找到具有相同的值的数字 k = (k+1) % p; } if (s[k] != x) { //如果没有相等的,那么存储x s[k] = x; } //否则,不用重复存储x } if (i == 0) { printf( "%d" , k); } else { printf( " %d" , k); } } return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人