[데이터 구조] Hash 표 초학 (주소 지정 법 개방)
1010 단어 알고리즘 과 구조
/*
Name:Hash ( )
Actor:HT
Time:2015 9 29
Error Reporte:
*/
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int hash[9000];
int value[9000];
int f1(int x)
{
return x % 8997;
}
int f2(int x)
{
return x % 8996;
}
int fhash(int x,int t) //hash
{
return f1(x)+t*f2(x);
}
void add(int x) //
{
int i,j;
for (i = 0; hash[fhash(x, i)] != 0; i++)
{}
hash[fhash(x, i)] = 1; //
value[fhash(x, i)] = x;
}
void serach(int x)//
{
int i;
for (i = 0; hash[fhash(x, i)] != 0; i++)
{
if (value[fhash(x, i)] == x)
{
printf("find it!
");
return;
}
}
printf("
");
}
void vis()
{
int i;
int temp;
for (i = 0; i < 9000; i++)
{
if (hash[i] == 0) continue;
printf("%d
", value[i]);
}
}
int main()
{
memset(hash, 0, sizeof(hash));
memset(value, 0, sizeof(value));
for (int i = 1; i < 5; i++)
{
add(i);
}
vis();
system("pause");
return 0;
}