第14周專案2

2021-08-11 17:51:53 字數 1666 閱讀 8897

/*

煙台大學計算機學院

檔名稱: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 ...