本文主要是介绍哈希:线性探测再散列+除留余数法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include <bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
typedef struct//哈希表的结构体类型
{int data[MAXSIZE];//一个数组int sum;//sum存的是当前哈希表中的元素个数
}HashTable;void Init(HashTable &H)//哈希表的初始化操作
{memset(H.data,0,MAXSIZE);H.sum=0;
}int Hash(int n,int p)//哈希函数,返回一个哈希值,这里采用除留余数法(严书225页)
{return n%p;
}int InsertHash(HashTable &H,int key,int p)//在哈希表H中插入一个关键字key,其中%p
{int k,d;d=0;//本次采用的是线性探测再散列,初始为0,如果发现冲突,就d++继续进行探测,如果发现没有元素,就插入k=Hash(key+d,p);//计算哈希值while(H.sum!=MAXSIZE)//只要哈希表没有满我就可以进行插入{if(!H.data[k])//如果这个地方空了,就插入{H.data[k]=key;H.sum++;return 1;}else//说明这个地方有别人了,那我得换一个地方,根据线性探测再散列的原则,我的d需要++然
这篇关于哈希:线性探测再散列+除留余数法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!