第14周專案1 驗證演算法

2021-08-11 18:09:55 字數 1520 閱讀 6579

問題及**:

/*      

* 檔名稱:cpp1.

* 作 者:薛瑞琪

* 完成日期:2017 年 12 月 3 日

* 版 本 號:v1.0

*

寫程式建立序列的雜湊表,裝填因子定為0.8,雜湊函式為h(k)=key%p,p=11,採用線性探查法解決衝突。

測試中:

(1)輸出建立的雜湊表;

(2)完成關鍵字為29的元素的查詢;

(3)在上述雜湊表中刪除關鍵字為77的元素,再顯示雜湊表。

* 輸入描述:無需輸入

* 程式輸出:實現各種演算法的函式的測試結果

*/

#include #define maxsize 100         //定義最大雜湊表長度

#define nullkey -1 //定義空關鍵字值

#define delkey -2 //定義被刪關鍵字值

typedef int keytype; //關鍵字型別

typedef char * infotype; //其他資料型別

typedef struct

hashdata;

typedef hashdata hashtable[maxsize]; //雜湊表型別

void insertht(hashtable ha,int &n,keytype k,int p) //將關鍵字k插入到雜湊表中

else //發生衝突時採用線性探查法解決衝突

while (ha[adr].key!=nullkey && ha[adr].key!=delkey);

ha[adr].key=k;

ha[adr].count=i;

}n++;

}void createht(hashtable ha,keytype x,int n,int m,int p) //建立雜湊表

知識點總結:

學習心得:

根據老師講解此**中有一定的錯誤,我嘗試在相關函式中加入m的引數,但是最後結果就與現在的結果不同表示有錯誤。希望有大神幫忙詳細講解一下。

錯誤一:

main函式中p修改為11,雜湊函式改為h(k)=k%11,裝填因子選0.8

錯誤二:

解決衝突中重新定址的adr=(adr+1)%p應該是adr=(adr+1)%m,應該以儲存單元數m為依據,決定是否將下標返回到0。 

第14周專案1 驗證演算法

問題及 檔名稱 lulu.cpp 完成日期 2015年11月30日 版本號 v1.o 作為測試序列,分別對查詢90 47 100進行測試。include define maxl 100 typedef int keytype typedef char infotype 10 typedef stru...

第14周專案1 驗證演算法

問題及 檔名稱 main.cbp 作 者 王效傑 完成日期 2017年11月30日 版 本 號 v1.0 的雜湊表,裝填因子定為0.8,雜湊函式為h k key p,p 11,採用線性探查法解決衝突。測試中 1 輸出建立的雜湊表 2 完成關鍵字為29的元素的查詢 3 在上述雜湊表中刪除關鍵字為77的...

第14周 專案1 驗證演算法 (1)

問題及 檔名稱 test.cpp 作 者 焦夢真 完成日期 2015年11月30日 版 本 號 v1.0 分別對查詢90 47 100進行測試。輸入描述 程式輸出 include define maxl 100 typedef int keytype typedef char infotype 10...