#include #include #include //引數化輸入\輸出
#include #include //using namespace //命名空間
#define total 40 //39個關鍵字
#define maxlen 10 //關鍵字長度
#define hashlen 41 //雜湊表長度41
#define m 40
typedef struct //雜湊表 結構體
hash;
//全域性變數
char keywords[total][maxlen]=; //c語言中的39個關鍵字存入二維陣列中,排好序的陣列
hash hs[hashlen]; //建立結構體hs
//函式宣告
void show(int key);
int read(char *filename);
int isletter(char ch);
int iskeywords(char *word);
int findhx(char *keyword);
int creathx(char *keyword);
int getfreepos(int key);
int getkey(char *keyword);
void main()}}
if(count==0)
printf("沒有衝突\n");
else
printf("\n\t\t\t衝突關鍵字共:%d個\n",count);
printf("\n按任意鍵返回...");
getch();
system("cls");
break;
case 'e':
case 'e':
getchar();
system("cls");
printf(" c語言中的關鍵字和其在雜湊表的位置:\n");
for(i=0;i='a'&&ch<='z')||(ch>='a'&&ch<='z'))
if((ch>='a'&&ch<='z'))
return 1; //是字母就返回1
else
return 0; //不是字母就返回0
}int findhx(char *keyword) //查詢雜湊表,分塊查詢
key=findhx(keyword); //不相同,繼續查詢
if(key<0) //沒有找到相等的keyword
if(key<0)
return -1;
hs[key].count++;
} else //該位置為空,直接將關鍵字插入該位置中
return 1;
}int getfreepos(int key) //在雜湊表中給關鍵字找個位置插進去
if(strlen(hs[key].keyword)==0)
printf("雜湊表位置: %d 關鍵字: %-11s出現次數: %d\n",key,hs[key].keyword,hs[key].count);
cont++;
}int getkey(char *keyword) //雜湊函式
int iskeywords(char *word)
return(0);
}/*int iskeywords(char *word) //判斷是否關鍵字
*/
雜湊表(雜湊表)的實現
雜湊函式直接用key size的形式,size為雜湊表的大小。衝突處理採用平方探測法,為保證可以探測到整個雜湊表空間,雜湊表大小設定為4k 3形式的素數。當雜湊表中的元素過多時會造成效能下降,這時應該倍增雜湊表的大小,重新計算原來雜湊表中每個元素在新的雜湊表中的位置。雜湊表的實現 hashtable...
分析 統計模組 關鍵字的統計
這段sql 是用來統計 關鍵字的,其中關鍵字劃分兩種狀態,存在幾個問題 關鍵字可能出現亂碼,解決方法案有兩個 重新把原始資料編碼 對出現亂碼的捨去 我選擇第 種方案,因為不正確資料量不會造成統計影響 判斷是否是漢字的方法 方法一public boolean vd string str return ...
整型關鍵字的雜湊對映
p,用除留餘數法定義的雜湊函式將關鍵字對映到長度為 p的雜湊表中。用線性探測法解決衝突。輸入第一行首先給出兩個正整數n 100 0 和p n的最小素數 分別為待插入的關鍵字總數 以及雜湊表的長度。第二行給出 n個整型關鍵字。數字間以空格分隔。在一行內輸出每個整型關鍵字在雜湊表中的位置。數字間以空格分...