/*
* 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個字串,雜...