ハッシュテーブル構造と検索アルゴリズムを実現する
1621 ワード
ハッシュテーブル構造と検索アルゴリズムを実現する
ハッシュテーブル構造と検索アルゴリズムを実現する
使用しているのはデポジット法を除いてハッシュ関数を構成しています.ここでは衝突を解決するために2つの方法を使っています.回にわたって再ハッシュを検出する. は、衝突を解決するために再びハッシュを検出する.
ハッシュテーブル構造と検索アルゴリズムを実現する
使用しているのはデポジット法を除いてハッシュ関数を構成しています.ここでは衝突を解決するために2つの方法を使っています.
#include
#include
#include
#define NULLKEY -1
typedef struct{
int key;
}KeyType;
typedef struct{
KeyType *elem;//
int count; //
int sizeindex; //
}HashTable;
int Hash(HashTable *H,int k){
return (k%H->sizeindex);
}
int Hash2(int i,int t){
int a=0,b=0;
if(i%2==0)
t=t+pow(++a,2);
else
t=t-pow(++b,2);
return t;
}
void CreateHash(HashTable *H){
int i,j,key,p,t,c=0;
printf(" :
");
scanf("%d%d",&H->count,&H->sizeindex);
H->elem=(KeyType *)malloc(H->sizeindex * sizeof(KeyType)); //
for(i=0;isizeindex;i++)
H->elem[i].key=NULLKEY;
printf(" :
");
for(j=0;jcount;j++){
scanf("%d",&key);
p=Hash(H,key);
if(H->elem[p].key==NULLKEY)
H->elem[p].key=key;
else{
while(H->elem[p].key!=NULLKEY){
t=p+1;
p=Hash(H,t);
}
H->elem[p].key=key;
}
}
}
int SearchHash(HashTable H,int key){
int p,t;
p=Hash(&H,key);
while(H.elem[p].key!=NULLKEY&&H.elem[p].key!=key){
t=p+1;
p=Hash(&H,t);
}
if(H.elem[p].key==key)
return p;
else
return -1;
}
void print(HashTable H){
int i=0;
for(i=0;i