SDUTACM 資料結構實驗之查詢七 線性之雜湊表

2021-07-16 22:00:51 字數 696 閱讀 9913

根據給定的一系列整數關鍵字和素數p,用除留餘數法定義hash函式h(key)=key%p,將關鍵字對映到長度為p的雜湊表中,用線性探測法解決衝突。重複關鍵字放在hash表中的同一位置。

連續輸入多組資料,每組輸入資料第一行為兩個正整數n(n <= 1000)和p(p >= n的最小素數),n是關鍵字總數,p是hash表長度,第2行給出n個正整數關鍵字,數字間以空格間隔。

輸出每個關鍵字在hash表中的位置,以空格間隔。注意最後乙個數字後面不要有空格。

5 5

21 21 21 21 21

4 524 15 61 88

4 524 39 61 15

5 524 39 61 15 39

1 1 1 1 1

4 0 1 3

4 0 1 2

4 0 1 2 0

做這道題首先要了解線性探測法。

這裡有一篇介紹線性探測法的文章,非常好,推薦給大家

學會了線性探測法後,話不多說,直接上**:

#include#includeint main()

{ int n,p,i,a[100000],c[100000],b[100000];

while(scanf("%d%d",&n,&p)!=eof)

{memset(a,-1,sizeof(a));

for(i=0;i

SDUTACM 資料結構實驗之查詢五 平方之雜湊表

給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i 1,2,3,m 1 輸入一組測試資料,資料的第1行給出兩個正整數n n 500 和p p 2n的最小素數 n是要插入...

SDUTACM 資料結構實驗之排序四 尋找大富翁

2015胡潤全球財富榜調查顯示,個人資產在1000萬以上的高淨值人群達到200萬人,假設給出n個人的個人資產值,請你快速找出排前m位的大富翁。首先輸入兩個正整數n n 10 6 和m m 10 其中n為總人數,m為需要找出的大富翁數目,接下來給出n個人的個人資產,以萬元為單位,個人資產數字為正整數,...

sdutacm 資料結構實驗之查詢一 二叉排序樹

資料結構實驗之查詢一 二叉排序樹 timelimit 400ms memory limit 65536kb submit statistic problem description 對應給定的乙個序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列 ...