題目要求如下:
7-1 整型關鍵字的雜湊對映(25 分)雜湊表(hash) :給定一系列整型關鍵字和素數p,用除留餘數法定義的雜湊函式將關鍵字對映到長度為p的雜湊表中。用線性探測法解決衝突。
輸入格式:
輸入第一行首先給出兩個正整數n(≤1000)和p(≥n的最小素數),分別為待插入的關鍵字總數、以及雜湊表的長度。第二行給出n個整型關鍵字。數字間以空格分隔。
輸出格式:
在一行內輸出每個整型關鍵字在雜湊表中的位置。數字間以空格分隔,但行末尾不得有多餘空格。
輸入樣例:
4 5
24 15 61 88
輸出樣例:
4 0 1 3
hash,一般翻譯做「雜湊」,也有直接音譯為「雜湊」的,就是把任意長度的輸入(又叫做預對映, pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來確定唯一的輸入值。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。
除留餘數法 :
取關鍵字轉換為數字表示,然後用這個數餘陣列長度,這個結果用作陣列的下標,便於訪問。即 h(key) = key mod p,p<=m。(mod表示求餘)
線性探測法:
若關鍵字得到的key值已經存在,那麼依次往後走,直到找到乙個空白的區域。
此題有個點需要注意,如果有乙個關鍵字出現過了,那麼輸出它第一次出現時的位置,不重複存放相同的資料。
完整**如下:
#include
#include
#include
int main()
else
if(s[k] != x)
//否則,不用重複儲存x
}if(i == 0)
else
}return
0;}
整型關鍵字的雜湊對映
p,用除留餘數法定義的雜湊函式將關鍵字對映到長度為 p的雜湊表中。用線性探測法解決衝突。輸入第一行首先給出兩個正整數n 100 0 和p n的最小素數 分別為待插入的關鍵字總數 以及雜湊表的長度。第二行給出 n個整型關鍵字。數字間以空格分隔。在一行內輸出每個整型關鍵字在雜湊表中的位置。數字間以空格分...
整型關鍵字的雜湊對映
7 11 整型關鍵字的雜湊對映 25 分 給定一系列整型關鍵字和素數p,用除留餘數法定義的雜湊函式將關鍵字對映到長度為p的雜湊表中。用線性探測法解決衝突。輸入第一行首先給出兩個正整數n 1000 和p n的最小素數 分別為待插入的關鍵字總數 以及雜湊表的長度。第二行給出n個整型關鍵字。數字間以空格分...
整型關鍵字的雜湊對映
給定一系列整型關鍵字和素數p,用除留餘數法定義的雜湊函式將關鍵字對映到長度為p的雜湊表中。用線性探測法解決衝突。輸入格式 輸入第一行首先給出兩個正整數n 1000 和p n的最小素數 分別為待插入的關鍵字總數 以及雜湊表的長度。第二行給出n個整型關鍵字。數字間以空格分隔。輸出格式 在一行內輸出每個整...