해시의 division method를 사용하였는데
메인함수에서 불러와서 사용을 하여야하는데
메인함수에서 불러와 사용할 수 있도록 도와주실분 계신가요 ㅠ
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int Division_Method(int *, int *, int , int , int, int);
void Dvision_search(int *, int *, int , int, int , int );
int division_hash(int *, int , int);
int main(void)
{
int i;
srand(time(NULL));
for(i=0; i<10; i++)
printf("%5d", rand()%45+1);
printf("\n");
system("PAUSE");
return 0;
}
int Division_Method(int *hash_table, int *elements_storage, int elements, int probing_method, int hash_tables, int prime_number)
{
int collision_count = 0, division_number, another_division_number, reminder, i, j;
division_number = prime_number;
another_division_number = prime_number + 5;
for(i=0; i<elements; i++)
{
j = 1;
reminder = division_hash(elements_storage, division_number, i) % hash_tables;
if((hash_table[reminder] != -1) && (probing_method ==1))
{
while(1)
{
collision_count++;
reminder=((division_hash(elements_storage, division_number, i)+j)%division_number)%hash_tables;
if(hash_table[reminder] = -1)
{
hash_table[reminder] = elements_storage[i];
break;
}
j++;
}
}
else if((hash_table[reminder] != -1) && (probing_method == 2))
{
while(1)
{
collision_count++;
reminder=(division_hash(elements_storage, division_number, i) + j*division_hash(elements_storage, another_division_number, prime_number));
if(hash_table[reminder] = -1)
{
hash_table[reminder] = elements_storage[i];
break;
}
j++;
}
}
else
hash_table[reminder] = elements_storage[i];
}
return collision_count;
}
void Dvision_search(int *hash_table, int *elements_storage, int elements, int probing_method, int hash_tables, int prime_number)
{
int i, j, division_number, another_division_number, reminder;
division_number = prime_number;
another_division_number = prime_number +5;
for(i=0; i<elements; i++)
{
j = 1;
reminder = division_hash(elements_storage, division_number, i)%hash_tables;
if((hash_table[reminder] != elements_storage[i])&&(probing_method == 1))
{
while(1)
{
reminder = ((division_hash(elements_storage, division_number,i) + j) % division_number)%hash_tables;
if(hash_table[reminder] = elements_storage[i])
break;
j++;
}
}
else if((hash_table[reminder] != elements_storage[i])&&(probing_method == 2))
{
while(1)
{
reminder = (division_hash(elements_storage, division_number,i) + j*division_hash(elements_storage, another_division_number, prime_number));
if(hash_table[reminder] = elements_storage[i]) break;
j++;
}
}
else
continue;
}
}
int division_hash(int *elements_storage, int division_number, int current_order)
{
return (elements_storage[current_order] % division_number);
}
고민한 흔적이 안보이네요. 노력해보세요. 셔틀갤 아니레요
해싱말고 피싱해