Newer
Older
if((a<='Z' && a>='A')) return ((a-'A')+10);
if((a<='z' && a>='a')) return ((a-'a')+26+10);
if((a<='9' && a>='0')) return (a-'0');
int i = 0;
int h1 = 0;
int h2 = 0;
int tempNum;
int MagicNumber = Table->size;
for(;i<Len;i++){
h1 += tempNum;
h2 += tempNum;
h2 /= MagicNumber;
h1 %= MagicNumber;
h2 %= MagicNumber;
}
*R1 = h1;
*R2 = h2;
}
int InsertTo(HT* Table, int Tid, char* Str, int Len){
int h1,h2;
if(Table->TidSequence[h1]!=-1 && Table->TidSequence[h1+h2]!=-1)return HT_NOSLOT;
if(Table->TidSequence[h1] == -1){
Table->TidSequence[h1] = Tid;
FakeAddr = FakeAddr+(h1*(NAME_LENGTH_MAX+1));
stringCopy((char *)FakeAddr,Str,Len);
bwprintf(COM2,"InsertTo: fakeaddr: %s\n\r",(char *)FakeAddr);
}else if(Table->TidSequence[h1+h2] == -1){
Table->TidSequence[h1+h2] = Tid;
FakeAddr = FakeAddr+((h1+h2)*(NAME_LENGTH_MAX+1));
stringCopy((char *)FakeAddr,Str,Len);
bwprintf(COM2,"InsertTo: fakeaddr: %s\n\r",(char *)FakeAddr);
}
return 0;
}
int Lookup(HT* Table,char* Str, int Len){
int h1,h2;
int FakeAddr = (int)(Table->NameSequence);
FakeAddr +=(h1 *(NAME_LENGTH_MAX + 1));
//bwprintf(COM2,"Hash: after hash, h1: %d, addr2: %d\n\r",h1,((char *)(FakeAddr)));
int result = stringCompare(Str,(char *)(FakeAddr));
bwprintf(COM2,"Hash: after compare, result: %d\n\r",result);
FakeAddr = (int)(Table->NameSequence);
FakeAddr = ((h1+h2)*(NAME_LENGTH_MAX+1));
result = stringCompare(Str,(char *)FakeAddr);
if(result == 0) return (Table->TidSequence)[h1+h2];