第13题用线性探查法实现的散列表 POWERBY KTL

原创 2006年06月12日 17:39:00

/*设有一组关键字(许炼2,35,124,153,84,57),需要插入到表长为12的散列表中。
本程序把该题目编写为程序,输入72 35 124 153 84 57回车,输入查找的关键字,
因为输出为key,而不是other,所以若输出与你输入的关键字相同则程序运行正确。
*/
#include "stdio.h"
#include "stdlib.h"

#define p 11
#define M 12
#define N 6
#define nil 0

typedef  int keytype;
typedef  char datatype;

typedef struct
{
 keytype key;
 datatype other;
}hashtable;

hashtable HT[12];

int H(keytype k)
{
 return k%p;
}
int Linsrch(hashtable HT[],keytype k)
{
 int d,i=0;
 d=H(k);
 while((i<M)&&(HT[d].key!=k)&&(HT[d].key!=nil))
 {
  i++;
  d=(d+i)%M;
 }
 return d;
}
void Linsert(hashtable *HT,hashtable *s)
{
 int d;
 d=Linsrch(HT,s->key);
 if(HT[d].key==nil)
  HT[d]=*s;
 else printf("ERROR");
}

void Init(hashtable HT[],int m,keytype key[],int n)
{
 int i;
 for (i=0;i<m;i++)
 {
  HT[i].key=0;
 }
 for(i=0;i<n;i++)
 {
  hashtable s;
  s.key=key[i];
  Linsert(HT,&s);
 }
}

int main()
{
 int i,d;
 keytype k;
 keytype key[N];
 printf("请输入你的关键字序列:");
 for(i=0;i<N;i++)
 {
  scanf("%d",&key[i]);
 }
 Init(HT,M,key,N);
 printf("现在的散列表状态为:/n");
 for(i=0;i<M;i++)
  printf("%d ",HT[i].key);
 printf("/n");
 printf("请输入你要查找的关键字:");
 scanf("%d",&k);
 d=Linsrch(HT,k);
 if(HT[d].key==k)
 {
  printf("%d /n",HT[d].key);
 }
 else{
  printf("发生错误。。。/n");
 }
 return 0;
}

 

相关文章推荐

[数据结构]散列表-链接法和开放寻址法 线性探查

在介绍hash表之前首先提到直接寻址表 但是由于实际上存储在字典里的关键字集合K比实际上所有可能的关键字的全域U要小的多,因此散列表所需要的存储空间比直接寻址表要小的多   ...

散列表(三):冲突处理的方法之开地址法(线性探测再散列的实现)

一、开地址法 基本思想:当关键码key的哈希地址H0 = hash(key)出现冲突时,以H0为基础,产生另一个哈希地址H1 ,如果H1仍然冲突,再以H0 为基础,产生另一个哈希地址H2 ,…,直到找...

哈希表的线性探查法搜索算法

#include #include using namespace std; const int P = 7; const int DefaultSize = 7; enum KindOfStatu...

线性散列表(linear hash)

  • 2010年10月31日 23:00
  • 1.05MB
  • 下载

12、线性探测法解决散列表保存字典的碰撞问题

function HashTable(){ this.table = new Array(137); this.values = new Array(); this.hashFunc = has...

11、线性探测法解决散列表碰撞问题

function HashTable(){ this.table = new Array(137); this.hashFunc = hashFunc; this.showDistro = sh...

建立Hash表(散列表)(运用线性探测法解决冲突)

输入key值。建立与查找。

散列表的设计与实现

  • 2013年11月07日 19:07
  • 24KB
  • 下载

散列表之链接法解决冲突

  • 2015年06月14日 10:19
  • 8KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第13题用线性探查法实现的散列表 POWERBY KTL
举报原因:
原因补充:

(最多只允许输入30个字)