雜湊表實現的統計關鍵字頻度

2021-05-28 15:09:38 字數 1831 閱讀 2192

#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個整型關鍵字。數字間以空格分隔。在一行內輸出每個整型關鍵字在雜湊表中的位置。數字間以空格分...