해시테이블 충돌발생시 문제 해결좀..
충돌(Collision)이 발생할 경우 Quadratic_Probing(2차원조사)
를이용하여 해결해야하는데요
If(충돌시)
{
2차원조사();
}
2차원조사()
함수를 어떻해짜야하는지 모르겠습니다
현재 소스에서 충돌부분을 못하고있습니다
소스내용
#include
#include
#include
#include
#define TABLE 101
int hashtable[TABLE];
int hash(int num) //폴딩 해싱
{
char buf[100],three[4]="";
int total=0,i,size;
sprintf(buf,"%d",num);
size=strlen(buf);
for(i=0;i
strncpy(three,&buf[i],3);
total += atoi(three); // atoi(): convert string to integer.
}
return total%TABLE;
}
void hash_qp() //2차원조사
{
}
main()
{
int random[100]; //100개 랜덤
int i,cnt=0;
int key;
srand((unsigned)time(0));
for(i=0;i<100;i++)
random[i]=rand() % 1000000; //100만단위의 난수100개
while(cnt<100)
{
key=hash(random[cnt]); //해싱
if(hashtable[key]==0) //충돌 여부
hashtable[key]=random[cnt];
else
hash_qp();
cnt++;
}
for(i=0;i
if(i%10==0)
printf("\n");
printf("%d ",hashtable[i]);
}
}
헐 소스가짤리네요
소스가짤리네요 ㅜㅜ
while(cnt<100)
{
key=hash(random[cnt]); //해싱
if(hashtable[key]==0) //충돌 여부
hashtable[key]=random[cnt];
else
hash_qp(random[cnt]); // 이부분의 함수를 어떻해 구현해야할지 모르겠습니다
cnt++;
}
댓글 달기