哈希表(链地址法处理冲突)

1000(ms)
10000(kb)
2542 / 6517
采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法。建立链表的时候采用尾插法。

输入

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

输出

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

样例输入

13
13
16 74 60 43 54 90 46 31 29 88 77 78 79
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++)
using namespace std;
typedef int KeyType;
typedef struct node
{
KeyType key;
struct node *next;
}NodeType;
typedef struct{
NodeType *firstp;
}HashTable; void InsertHT(HashTable ha[],int &n,int p,KeyType k)
{
int adr;
adr=k%p;
NodeType *q,*r;
q=(NodeType *)malloc(sizeof(NodeType));
q->next=NULL;
q->key=k;
if(ha[adr].firstp==NULL)
ha[adr].firstp=q;
else
{
r=ha[adr].firstp;
while(r->next!=NULL)
{
r=r->next;
}
r->next=q;
}
n++;
} void creatHT(HashTable ha[],int &n,int m,int p,KeyType keys[],int nl)
{
rep(i,,m)
ha[i].firstp=NULL;
n=;
rep(i,,nl)
InsertHT(ha,n,p,keys[i]);
} bool DeleteHT(HashTable ha[],int &n,int m,int p,KeyType k)
{
int adr;
adr=k%p;
NodeType *q,*preq;
q=ha[adr].firstp;
if(q==NULL)
return false;
if(q->key==k)
{
ha[adr].firstp=q->next;
free(q);
n--;
return true;
}
preq=q;
q=q->next;
while(q!=NULL)
{
if(q->key==k)
break;
q=q->next;
}
if(q!=NULL)
{
preq->next=q->next;
free(q);
n--;
return true;
}
else
return false;
} void serchHT(HashTable ha[],int p,KeyType k)
{
int i=,adr;
adr=k%p;
NodeType *q;
q=ha[adr].firstp;
while(q!=NULL)
{
i++;
if(q->key==k)
break;
q=q->next;
}
if(q!=NULL)
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,k);
rep(i,,n)
DeleteHT(ha,x,m,m,keys[i]);
return ;
}

swust oj 1012的更多相关文章

  1. SWUST OJ 1012哈希表(链地址法处理冲突)

    哈希表(链地址法处理冲突) 1000(ms) 10000(kb) 2676 / 6911 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法.建立链表的时候采用尾插法 ...

  2. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  3. [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)

    题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...

  4. SWUST OJ NBA Finals(0649)

    NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128   Descri ...

  5. [Swust OJ 1023]--Escape(带点其他状态的BFS)

    解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535     Descript ...

  6. [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)

    题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535   Descriptio ...

  7. [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)

    题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...

  8. [Swust OJ 1026]--Egg pain's hzf

      题目链接:http://acm.swust.edu.cn/problem/1026/     Time limit(ms): 3000 Memory limit(kb): 65535   hzf ...

  9. [Swust OJ 1139]--Coin-row problem

    题目链接:  http://acm.swust.edu.cn/contest/0226/problem/1139/ There is a row of n coins whose values are ...

随机推荐

  1. mybatis:SQL拦截器

    打印执行的SQL语句 import java.sql.Connection; import java.text.DateFormat; import java.util.Date; import ja ...

  2. TestNg框架基础入门

    TestNg框架简介: TestNG,即Testing, Next Generation,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架.TestN ...

  3. poj 3268 Silver Cow Party(最短路dijkstra)

    描述: One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the bi ...

  4. git/gerrit的简介

    gerrit和git   1.git Git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN是集中式版本控制系统. Git与svn比较 相同:能记录文件的所有更改记录.这样是为了大量更 ...

  5. Spring出现事务代理的原因

    JdbcTemplate 在配置事务代理之前,JdbcTemplate 的关闭策略,就是操作完立刻关闭!意味着,默认情况是JdbcTemplate操作是不支持事务的!!! 但是我们的程序是需要支持事务 ...

  6. linux环境给mongodb创建索引

    首先我们来了解索引,如果有基础的可以直接看最后面的操作. 可参照 DoNotStop 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/u013725455/artic ...

  7. Org mode无法生成LaTeX公式预览图片

    最近需要在Cygwin平台下的Emacs Org mode中生成LaTeX数学公式的预览图片,从而得到图文并貌的笔记与任务管理文档.但当我执行org-toggle-latex-fragment命令后却 ...

  8. Docker 踩坑记(failed to build: Get https://registry-1.docker.io/v2/microsoft/dotnet/manifests/2.1-sdk: unauthorized: incorrect username or password)

    今天看了下.net core 示例项目eShopWebOnline. 无奈在使用docker的时候总是提示一下错误信息,大致信息是用户名密码错误.但是,明明桌面右下角Docker帐号处于登录状态. E ...

  9. pip包导出

    用pip对已有的环境做导出准备 1. 使用pip导出当前环境所有依赖包信息文件 pip freeze > requirements.txt 2. 下载所有依赖包到本地 pip install - ...

  10. 公众号用户发送消息后台PHP回复没有反应的解决办法

    1.问题:微信公众平台官方提供下载的示例代码中,使用$postStr =$GLOBALS["HTTP_RAW_POST_DATA"];来获取微信服务器推送的消息数据.但是有的开发者 ...