/*
煙台大學計算機學院
檔名稱:xiangmu.cpp
完成日期:2023年12月3日
問題描述:已知乙個關鍵字序列為if、while、for、case、do、break、else、struct、union、int、double、float、char、long、bool,共15個字串,雜湊函式h(key)為關鍵字的第乙個字母在字母表中的序號,雜湊表的表長為26。
(1)若處理衝突的方法採用線性探測法,請設計演算法,輸出每個關鍵字對應的h(key),輸出雜湊表,並求成功情況下的平均查詢長度。
(2)若處理衝突的方法採用鏈位址法,請設計演算法,輸出雜湊表,並計算成功情況和不成功情況下的平均查詢長度
輸入描述:無
輸出描述:雜湊表和平均查詢長度
*///(1)
#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=0; i
//(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;
}
執行結果:
學習心得:
學到了兩種衝突解決方法。
第14周專案2 (2)
問題及 檔名稱 number.cpp 作 者 趙敏 完成日期 2014年11月29日 版 本 號 v1.0 問題描述 設score 8 陣列中儲存8名同學的c 成績,增加乙個陣列string name 8 並賦初值,表示同學們的姓名。這兩個陣列中,每名同學的姓名與成績的下標要始終保持一致 例如nam...
第5周專案1 4
all rights reserced.檔名稱 main.cpp 作者 李鑫 完成日期 2016.4.6 問題描述 使用有預設引數的建構函式,不給定實參時,預設邊長為1 注意 只需要乙個建構函式即可。include includeusing namespace std class double x,...
第14周專案1 2
煙台大學計算機學院 檔名稱 xiangmu.cpp 完成日期 2017年12月3日 觀察執行結果並深刻領會演算法的思路和實現方法 1 直接插入排序 2 希爾排序 輸入描述 無 輸出描述 排序後的序列 直插法 include define maxsize 20 typedef int keytype ...