日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

E数据结构实验之查找五:平方之哈希表

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 E数据结构实验之查找五:平方之哈希表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

給定的一組無重復數據的正整數,根據給定的哈希函數建立其對應hash表,哈希函數是H(Key)=Key%P,P是哈希表表長,P是素數,處理沖突的方法采用平方探測方法,增量di=±i^2,i=1,2,3,…,m-1
Input

輸入包含多組測試數據,到 EOF 結束。

每組數據的第1行給出兩個正整數N(N <= 500)和P(P >= 2N的最小素數),N是要插入到哈希表的元素個數,P是哈希表表長;第2行給出N個無重復元素的正整數,數據之間用空格間隔。
Output

按輸入數據的順序輸出各數在哈希表中的存儲位置 (hash表下標從0開始),數據之間以空格間隔,以平方探測方法處理沖突。
Sample
Input

4 11 10 6 4 15 9 11 47 7 29 11 9 84 54 20 30

Output

10 6 4 5 3 7 8 0 9 6 10 2 1 #include<bits/stdc++.h>using namespace std;int Hash[555];int main() {int n, mod;while(cin >> n >> mod){memset(Hash, -1, sizeof(Hash));//初始化Hsah為-1for(int i = 0; i < n; i++){int k;cin >> k;k %= mod;Hash[k]++;//把取余后的數字放到hash數組中,并且加1,加1后hash中的數字就不會是-1if(!Hash[k]){cout << k; //hash中的數==0,就證明里面存放了數字且沒有沖突,輸出即可}else{for(int j = 1; j <= mod - 1; j++){if(Hash[(k + j * j) % mod] == -1)判斷是否已經有數字存放進去{Hash[(k + j * j) % mod]++;//做加1操作cout << (k + j * j) % mod;//輸出數據break;}else if(Hash[(k - j * j) % mod] == -1){Hash[(k - j * j) % mod]++;cout << (k - j * j) % mod;break;}}}if(i == n - 1)cout << endl;elsecout << " ";}}return 0; }

總結

以上是生活随笔為你收集整理的E数据结构实验之查找五:平方之哈希表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。