● 已知乙個線性表(38,25,74,63,52,48),假定採用雜湊函式h(key)=key%7 計算散
列位址,並雜湊儲存在雜湊表a[0..6]中,若採用線性探測方法解決衝突,則在該雜湊表上
進行等概率成功查詢的平均查詢長度為_____ 。
我們首先必須要知道在建立這個雜湊表時,每個資料儲存時進行了幾次雜湊。這樣就知道哪乙個元素,查詢的長度是多少。雜湊表的填表過程如下:首先存入第乙個元素38,由於h(38)=38%7=3,又因為3號單元現在沒有資料,所以把38存入3號單元。 接著存入第二個元素25,由於h(25)=25%7=4,又因為4號單元現在沒有資料,所以把25存入4號單元。 接著存入第三個元素74,由於h(74)=74%7=4,此時的4號單元已經被25佔據,所以進行線性再雜湊,線性再雜湊的公式為:hi=(h(key)+di)% m ,其中的di=1,2,3,4...。所以h1=(4+1)%7=5,此時的單元5沒有存資料,所以把74存入到5號單元。 接著存入第四個元素63,由於h(63)=63%7=0,此時的0號單元沒有資料,所以把63存入0號單元。 接著存入第五個元素52,由於h(52)=52%7=3,此時的3號單元已被38佔據,所以進行線性再雜湊:h1=(3+1)%7=4,但4號單元也被佔據了,所以再次雜湊:h2=(3+2)%7=5,但5號單元也被佔據了,所以再次雜湊:h3=(3+3)%7=6,6號單元為空,所以把52存入6號單元。 最後存入第六個元素48,由於h(48)=48%7=6,此時的6號單元已被佔據,所以進行線性再雜湊:h1=(6+1)%7=0,但0號單元也被佔據了,所以再次雜湊:h2=(6+2)%7=1,1號單元為空,所以把48存入1號單元。 如果乙個元素存入時,進行了n次雜湊,相應的查詢次數也是n,所以38,25,63這三個元素的查詢長度為1,74的查詢長度為2,48的查詢長度為3,52的查詢長度為4。所以平均查詢長度為:(1+1+1+2+3+4)/6=2。位置0
1234
56元素63
4838
2574
52比較次數13
1124
資料結構 線性表相關
1.佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 2.棧 stack 在電腦科學中是限定僅在棧頂進行插入或刪除操作的線性表。3.鍊錶 linked list 是一種常見的基礎資料結構,是一種線性表,是一種物理儲存單元上非連續 非順序的儲存結構。雙向鍊錶也叫雙鏈表 是...
C 實現線性表相關演算法
1.逆轉順序表中的所有元素 void reverse int a int n else if l data x 3.刪除不帶頭結點單鏈表l中所有值為x的結點 遞迴 void del x linklist l,elemtype x else 4.刪除帶頭結點單鏈表l中所有值為x的結點 void del...
線性表專案1 線性表相關函式1
檔名稱 list.h list.cpp main.cpp writer 徐吉平 完成日期 2015年9月14日 版本號 code block 12.11 問題描述 完成建立 輸出線性表,判斷線性表是否為空表,求長度 某個資料元素值等功能 輸入描述 無 程式輸出 輸出線性表及表的長度,資料搜尋的結果 ...