代码:
#include<iostream>
using namespace std;
#define MAXLEN 11
#define INVALID_VALUE -1
void Init_hashtable(int hashtable[])
{
for(int i=0;i<MAXLEN;i++)
{
hashtable[i]=INVALID_VALUE ;
}
}
int hash(int a)
{
return a % MAXLEN;
}
bool Find(int a,int Hashtable[])
{
int position=hash(a);
int hashkey=hash(a);
int d=1; //增量序列
while(Hashtable[position]!=a && Hashtable[position]!=INVALID_VALUE)
{
position=hash(hashkey+d);
d++;
}
if(Hashtable[position]==a)
return true;
if(Hashtable[position]==INVALID_VALUE)
return false;
}
int Insert(int a,int Hashtable[])
{
int position=hash(a);
int hashkey=hash(a);
int d=1;
if(Find(a,Hashtable))
{
cout<<"the value has already exist"<<endl;
return -1;
}
while(Hashtable[position]!=INVALID_VALUE)
{
position=hash(hashkey+d);
d++;
}
Hashtable[position]=a;
return position;
}
int main(void)
{
int Hashtable[MAXLEN];
Init_hashtable(Hashtable);
int position=Insert( 17,Hashtable);
cout<<"17在哈希表中的位置为:"<<position<<endl;
position=Insert( 60,Hashtable);
cout<<"60在哈希表中的位置为:"<<position<<endl;
position=Insert( 29,Hashtable);
cout<<"29在哈希表中的位置为:"<<position<<endl;
position=Insert( 38,Hashtable);
cout<<"38在哈希表中的位置为:"<<position<<endl;
position=Insert( 17,Hashtable);
return 0;
}