第十四周 專案二 用雜湊法組織關鍵字

2021-08-13 10:55:46 字數 1833 閱讀 9505

/*                     

* all right reserved.

* 檔名稱:search

* 完成日期:2023年12月14日

* 版本號:v1.0

* 問題描述:用雜湊法組織關鍵字

* 輸入描述:標準函式輸入

* 程式輸出:標準函式輸出

*/

【專案 - 用雜湊法組織關鍵字】 

已知乙個關鍵字序列為if、while、for、case、do、break、else、struct、union、int、double、float、char、long、bool,共15個字串,雜湊函式h(key)為關鍵字的第乙個字母在字母表中的序號,雜湊表的表長為26。 

(1)若處理衝突的方法採用線性探測法,請設計演算法,輸出每個關鍵字對應的h(key),輸出雜湊表,並求成功情況下的平均查詢長度。

#include #include #define n 15

#define m 26

int h(char *s)

int main()

; int i, j, k;

char ht[m][10];

int det[m]; //存放探測次數

(2)若處理衝突的方法採用鏈位址法,請設計演算法,輸出雜湊表,並計算成功情況和不成功情況下的平均查詢長度。

#include #include #include #define n 15

#define m 26

typedef struct node //定義雜湊鍊錶的節點型別

lnode;

typedef struct

httype;

int h(char *s) //實現雜湊函式

//構造雜湊表

void hash(char *s, httype ht)

}}//輸出雜湊表

void dispht(httype ht)

printf("\n");

}printf("---------------------\n");

}//求查詢成功情況下的平均查詢長度

double searchlength1(char *s, httype ht)

count+=k;

}return 1.0*count/n; //成功情況僅有n種

}//求查詢不成功情況下的平均查詢長度

double searchlength2(httype ht)

count+=k;

}return 1.0*count/m; //不成功時,在表長為m的每個位置上均可能發生

}int main()

; hash(s, ht);

dispht(ht);

printf("查詢成功情況下的平均查詢長度 %f\n", searchlength1(s, ht));

printf("查詢不成功情況下的平均查詢長度 %f\n", searchlength2(ht));

return 0;

}

執行結果:

第十四周專案2 用雜湊法組織關鍵字

all rights reservrd.檔名稱 test.cpp 版本號 v1.0 問題描述 用雜湊法組織關鍵字 問題及 1 若處理衝突的方法採用線性探測法,請設計演算法,輸出每個關鍵字對應的h key 輸出雜湊表,並求成功情況下的平均查詢長度。include include define n 15...

第十四周 專案2 用雜湊表組織關鍵字

作 者 武美妤 完成日期 2017年11月30日 版 本 號 v1.0 線性探測法 include include define n 15 define m 26 int h char s int main int i,j,k char ht m 10 int det m 存放探測次數 for i ...

第十五周 專案二 用雜湊法組織關鍵字

問題及 all right reserved.檔名稱 用雜湊法組織關鍵字.cpp 版本號 v1.0 問題描述 已知乙個關鍵字序列為if while for case do break else struct union int double float char long bool,共15個字串,雜...