📄 hash.c
字号:
/*DJCM 99 06 25 Hash functions stolen from Niemann or made by DJCM */#include <stdio.h>#include <math.h>#include <stdlib.h>#include <string.h>#include <memory.h>#include "./hash.h" #define HashTableSize N/* this hash function is 'good' */int hash(char *str , int N) { int h; unsigned char h1, h2; if (*str == 0) return 0; h1 = *str; h2 = *str + 1; str++; /* printf("%d:%d\n", h1, h2 ) ; */ while (*str) { h1 = Rand8[h1 ^ *str]; h2 = Rand8[h2 ^ *str]; str++; /* printf("%d:%d\n", h1, h2 ) ; */ } /* h is in range 0..65535 */ h = ((int)h1 << 8)|(int)h2; /* use division method to scale */ return h % HashTableSize ;}/* this hash function is 'bad' in that it loves anagrams */int chash(char *str , int N) { int h; unsigned char h1, h2; if (*str == 0) return 0; h1 = *str; h2 = Rand8[*str] ; str++; while (*str) { h1 ^= *str; h2 ^= Rand8[*str]; str++; } /* h is in range 0..65535 */ h = ((int)h1 << 8)|(int)h2; /* use division method to scale */ return h % HashTableSize ;}void loadRand8 (void) {Rand8[1]=132;Rand8[2]=45;Rand8[3]=80;Rand8[4]=139;Rand8[5]=243;Rand8[6]=44;Rand8[7]=181;Rand8[8]=59;Rand8[9]=127;Rand8[10]=31;Rand8[11]=21;Rand8[12]=102;Rand8[13]=73;Rand8[14]=97;Rand8[15]=252;Rand8[16]=142;Rand8[17]=198;Rand8[18]=168;Rand8[19]=199;Rand8[20]=202;Rand8[21]=213;Rand8[22]=38;Rand8[23]=161;Rand8[24]=82;Rand8[25]=90;Rand8[26]=235;Rand8[27]=134;Rand8[28]=104;Rand8[29]=157;Rand8[30]=204;Rand8[31]=239;Rand8[32]=223;Rand8[33]=222;Rand8[34]=172;Rand8[35]=192;Rand8[36]=147;Rand8[37]=96;Rand8[38]=87;Rand8[39]=49;Rand8[40]=212;Rand8[41]=106;Rand8[42]=117;Rand8[43]=251;Rand8[44]=28;Rand8[45]=53;Rand8[46]=246;Rand8[47]=186;Rand8[48]=103;Rand8[49]=197;Rand8[50]=190;Rand8[51]=245;Rand8[52]=6;Rand8[53]=77;Rand8[54]=189;Rand8[55]=60;Rand8[56]=149;Rand8[57]=10;Rand8[58]=244;Rand8[59]=78;Rand8[60]=14;Rand8[61]=113;Rand8[62]=232;Rand8[63]=145;Rand8[64]=27;Rand8[65]=144;Rand8[66]=63;Rand8[67]=125;Rand8[68]=57;Rand8[69]=121;Rand8[70]=101;Rand8[71]=224;Rand8[72]=109;Rand8[73]=88;Rand8[74]=94;Rand8[75]=9;Rand8[76]=39;Rand8[77]=137;Rand8[78]=178;Rand8[79]=23;Rand8[80]=105;Rand8[81]=201;Rand8[82]=61;Rand8[83]=85;Rand8[84]=55;Rand8[85]=74;Rand8[86]=76;Rand8[87]=228;Rand8[88]=8;Rand8[89]=170;Rand8[90]=110;Rand8[91]=176;Rand8[92]=188;Rand8[93]=240;Rand8[94]=56;Rand8[95]=216;Rand8[96]=249;Rand8[97]=200;Rand8[98]=115;Rand8[99]=171;Rand8[100]=209;Rand8[101]=35;Rand8[102]=68;Rand8[103]=30;Rand8[104]=221;Rand8[105]=191;Rand8[106]=48;Rand8[107]=32;Rand8[108]=72;Rand8[109]=207;Rand8[110]=52;Rand8[111]=150;Rand8[112]=180;Rand8[113]=46;Rand8[114]=255;Rand8[115]=65;Rand8[116]=118;Rand8[117]=193;Rand8[118]=220;Rand8[119]=230;Rand8[120]=250;Rand8[121]=100;Rand8[122]=116;Rand8[123]=25;Rand8[124]=123;Rand8[125]=58;Rand8[126]=254;Rand8[127]=163;Rand8[128]=154;Rand8[129]=54;Rand8[130]=122;Rand8[131]=203;Rand8[132]=15;Rand8[133]=129;Rand8[134]=33;Rand8[135]=64;Rand8[136]=238;Rand8[137]=158;Rand8[138]=253;Rand8[139]=128;Rand8[140]=205;Rand8[141]=183;Rand8[142]=93;Rand8[143]=126;Rand8[144]=138;Rand8[145]=17;Rand8[146]=153;Rand8[147]=86;Rand8[148]=26;Rand8[149]=196;Rand8[150]=177;Rand8[151]=114;Rand8[152]=174;Rand8[153]=16;Rand8[154]=242;Rand8[155]=143;Rand8[156]=184;Rand8[157]=148;Rand8[158]=162;Rand8[159]=206;Rand8[160]=40;Rand8[161]=71;Rand8[162]=67;Rand8[163]=169;Rand8[164]=70;Rand8[165]=146;Rand8[166]=107;Rand8[167]=75;Rand8[168]=112;Rand8[169]=151;Rand8[170]=130;Rand8[171]=160;Rand8[172]=98;Rand8[173]=19;Rand8[174]=50;Rand8[175]=3;Rand8[176]=248;Rand8[177]=20;Rand8[178]=92;Rand8[179]=173;Rand8[180]=84;Rand8[181]=155;Rand8[182]=89;Rand8[183]=156;Rand8[184]=131;Rand8[185]=29;Rand8[186]=167;Rand8[187]=36;Rand8[188]=159;Rand8[189]=66;Rand8[190]=229;Rand8[191]=225;Rand8[192]=219;Rand8[193]=233;Rand8[194]=164;Rand8[195]=136;Rand8[196]=24;Rand8[197]=182;Rand8[198]=187;Rand8[199]=47;Rand8[200]=12;Rand8[201]=217;Rand8[202]=37;Rand8[203]=108;Rand8[204]=83;Rand8[205]=226;Rand8[206]=18;Rand8[207]=62;Rand8[208]=34;Rand8[209]=135;Rand8[210]=99;Rand8[211]=141;Rand8[212]=140;Rand8[213]=91;Rand8[214]=165;Rand8[215]=11;Rand8[216]=166;Rand8[217]=194;Rand8[218]=214;Rand8[219]=175;Rand8[220]=79;Rand8[221]=227;Rand8[222]=179;Rand8[223]=43;Rand8[224]=210;Rand8[225]=133;Rand8[226]=231;Rand8[227]=237;Rand8[228]=236;Rand8[229]=2;Rand8[230]=215;Rand8[231]=241;Rand8[232]=152;Rand8[233]=7;Rand8[234]=42;Rand8[235]=13;Rand8[236]=51;Rand8[237]=218;Rand8[238]=120;Rand8[239]=1;Rand8[240]=41;Rand8[241]=4;Rand8[242]=111;Rand8[243]=195;Rand8[244]=124;Rand8[245]=185;Rand8[246]=22;Rand8[247]=247;Rand8[248]=5;Rand8[249]=69;Rand8[250]=119;Rand8[251]=211;Rand8[252]=81;Rand8[253]=234;Rand8[254]=0;Rand8[255]=95;Rand8[0]=208;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -