当前位置:网站首页>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;
}边栏推荐
猜你喜欢
随机推荐
Recursively check if a configuration item has changed and replace it
2022.8.1-----leetcode.1374
OC中new和init的区别
【LeetCode】104. Maximum depth of binary tree
树链剖分-
Duplicate entry ‘XXX‘ for key ‘XXX.PRIMARY‘解决方案。
架构:微服务网关(SIA-Gateway)简介
架构:应用架构的演进以及微服务架构的落地实践
OperatingSystemMXBean to get system performance metrics
MySQL修改最大连接数限制
Docker-compose安装mysql
Nacos source code analysis topic (1) - environment preparation
WebShell连接工具(中国菜刀、WeBaCoo、Weevely)使用
【每日一道LeetCode】——1. 两数之和
第 304 场力扣周赛
Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
ApiFox 基本使用教程(浅尝辄止,非广)
【LeetCode】1374. 生成每种字符都是奇数个的字符串
【LeetCode】144. Preorder Traversal of Binary Tree
2W字!详解20道Redis经典面试题!(珍藏版)









