哈希表(开放定址法处理冲突)

1000(ms)
10000(kb)
2698 / 6177
采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用开放定址法的线性探测。

输入

第一行为哈希表的长度n; 第二行为关键字的个数; 第三行为关键字集合; 第三行为要查找的数据。

输出

如果查找成功,输出关键字所哈希表中的地址和比较次数;如果查找不成功,输出-1。

样例输入

13
11
16 74 60 43 54 90 46 31 29 88 77
16

样例输出

3,1
 #include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<list>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define NULLKEY -1
#define DELKEY -2
using namespace std;
typedef int KeyType;
typedef struct{
KeyType key;
int count;
}HashTable; void InsertHT(HashTable ha[],int &n,int m,int p,KeyType k)
{
int i,adr;
adr=k%p;
if(ha[adr].key==NULLKEY||ha[adr].key==DELKEY)
{
ha[adr].key=k;
ha[adr].count=;
}
else
{
i=;
do{
adr=(adr+)%m;
i++;
}while(ha[adr].key!=NULLKEY&&ha[adr].key!=DELKEY);
ha[adr].key=k;
ha[adr].count=i;
}
n++;
} void creatHT(HashTable ha[],int &n,int m,int p,KeyType keys[],int nl)
{
rep(i,,m)
{
ha[i].key=NULLKEY;
ha[i].count=;
}
n=;
rep(i,,nl)
InsertHT(ha,n,m,p,keys[i]);
} bool DeleteHT(HashTable ha[],int &n,int m,int p,KeyType k)
{
int adr;
adr=k%p;
while(ha[adr].key!=NULLKEY&&ha[adr].key!=k)
adr=(adr+)%m;
if(ha[adr].key==k)
{
ha[adr].key=DELKEY;
return true;
}
else
return false;
} void serchHT(HashTable ha[],int m,int p,KeyType k)
{
int i=,adr;
adr=k%p;
while(ha[adr].key!=NULLKEY&&ha[adr].key!=k)
{
i++;
adr=(adr+)%m;
}
if(ha[adr].key==k)
cout<<k%p<<","<<i;
else
cout<<"-1";
} int main()
{
int m,n,k,x;
KeyType keys[];
HashTable ha[];
cin>>m>>n;
rep(i,,n)
cin>>keys[i];
cin>>k;
creatHT(ha,x,m,m,keys,n);
serchHT(ha,m,m,k);
rep(i,,n)
DeleteHT(ha,x,m,m,keys[i]);
return ;
}

最新文章

  1. php中双冒号::的用法
  2. VS上关于找不到程序集的问题
  3. Openlayers+Geoserver(一):项目介绍以及地图加载
  4. jquery练习
  5. ARM伪指令,王明学learn
  6. hdu 5023 A Corrupt Mayor&#39;s Performance Art 线段树
  7. unity3d中dllimport方法的使用,以接入腾讯平台为例!!!
  8. JAAS LOGIN IN WEBLOGIC SERVER--reference
  9. scrapy爬虫初体验
  10. 在浏览器中通过bartender,调用条码打印机的active控件代码的实现
  11. Java面向对象知识点
  12. Struts2.5 伪静态的配置
  13. JAVA设计模式---迭代器模式
  14. python requests + xpath 获取分页详情页数据存入到txt文件中
  15. Python *Mix_w2
  16. VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用
  17. json 删除、添加对象
  18. 010-Go 操作PostgreSQL数据库2
  19. HTML 标签大全及属性
  20. Spyder简述

热门文章

  1. 【easy】108. Convert Sorted Array to Binary Search Tree
  2. 统计信息不准导致sql性能下降
  3. Python 爬虫-进阶开发之路
  4. form表单老忘的
  5. 详解MariaDB数据库的触发器
  6. JsRender实用入门教程
  7. samba服务器一次排错
  8. Servlet校验密码之Mariadb篇
  9. 基于flask+gunicorn+nginx来部署web App
  10. js过滤html标签