当前位置:网站首页>7-42 整型关键字的散列映射 (25 分)
7-42 整型关键字的散列映射 (25 分)
2022-08-02 02:56:00 【兄dei!】
原题:https://pintia.cn/problem-sets/15/problems/889
本题是考察对哈希表的理解,这里面哈希函数是用的除留余数法。【H(key)=key%p】除留余数法的关键在于找到那个余数p;题中已经给出。
规定处理哈希冲突的方法是线性探测法,就是简单地加一就行了。
#include<stdio.h>
#include<stdlib.h>
typedef struct h{
int *data;
int TableSize;
}*HashList;
HashList creat(int p)
{
int i;
HashList H=(HashList)malloc(sizeof(HashList));
H->TableSize=p;
H->data=(int*)malloc(sizeof(int)*H->TableSize);
for(i=0;i<p;i++)H->data[i]=0;//初始化0是空
return H;
}
int Findindex(HashList H,int key)//线性探测处理哈希冲突,找到合适的位置,并且返回它
{
int index=key%H->TableSize;
//找空位,如果在找的过程中碰到它本身,直接退出就行了。
while(H->data[index]!=0&&H->data[index]!=key)
{
index++;
if(index==H->TableSize)index=0;//如果满了就从头开始找
}
return index;
}
int insert(HashList H,int key)
{
int index=Findindex(H,key);//先找一个合适的位置
H->data[index]=key;
return index;
}
int main()
{
int i,N,P,key;
scanf("%d%d",&N,&P);
HashList H=creat(P);
for(i=0;i<N;i++)
{
scanf("%d",&key);
int x=insert(H,key);
if(i==0)
printf("%d",x);
else
printf(" %d",x);
}
return 0;
}
边栏推荐
猜你喜欢
WebShell connection tools (Chinese kitchen knife, WeBaCoo, Weevely) use
Nacos source code analysis topic (2) - service registration
Flask之路由(app.route)详解
Go语学习笔记 - gorm使用 - gorm处理错误 Web框架Gin(十)
WebShell Feature Value Summary and Detection Tool
Redis主从、哨兵、 Cluster集群一锅端!
消息队列经典十连问
JSP Webshell 免杀
“带薪划水”偷刷阿里老哥的面经宝典,三次挑战字节,终成正果
直击程序员面试现场:百度面试官都问了我些啥?
随机推荐
DVWA安装教程(懂你的不懂·详细)
使用self和_(下划线)的区别
22-08-01 西安 尚医通(01)跨域配置、Swagger2、R类、统一异常处理和自定义异常、Logback日志
灰度传感器、、、diy原理。。图
analog IC layout-Design for reliability
2W字!梳理50道经典计算机网络面试题(收藏版)
ROS2自学笔记:launch文件完整编写流程
Swift运行时(派发机制)
IPIDEA的使用方式
很有意思的经历,很有意思的项目--文件夹对比工具
JSP WebSehll 后门脚本
2022牛客多校三_F G
【LeetCode】144.二叉树的前序遍历
【LeetCode】1374. 生成每种字符都是奇数个的字符串
8万字带你入门Rust
(1) Redis: Key-Value based storage system
【LeetCode】145. Postorder Traversal of Binary Tree
第 304 场力扣周赛
给你一个大厂面试的机会,你能面试上吗?进来看看!
AcWing 1053. Repair DNA problem solution (state machine DP, AC automata)