資料結構實驗之查詢七:線性之雜湊表
Description
根據給定的一系列整數關鍵字和素數p,用除留餘數法定義hash函式H(Key)=Key%p,將關鍵字對映到長度為p的雜湊表中,用線性探測法解決衝突。重複關鍵字放在hash表中的同一位置。
G - 資料結構實驗之查詢七:線性之雜湊表
Description
根據給定的一系列整數關鍵字和素數p,用除留餘數法定義hash函式H(Key)=Key%p,將關鍵字對映到長度為p的雜湊表中,用線性探測法解決衝突。重複關鍵字放在hash表中的同一位置。
Input
連續輸入多組資料,每組輸入資料第一行為兩個正整數N(N <= 1500)和p(p >= N的最小素數),N是關鍵字總數,p是hash表長度,第2行給出N個正整數關鍵字,數字間以空格間隔。
Output
輸出每個關鍵字在hash表中的位置,以空格間隔。注意最後一個數字後面不要有空格。
Sample
Input
5 5
21 21 21 21 21
4 5
24 15 61 88
4 5
24 39 61 15
5 5
24 39 61 15 39
Output
1 1 1 1 1
4 0 1 3
4 0 1 2
4 0 1 2 0
程式碼
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int hash[2000];
int n,p;
int add(int k)
{
int i,j,f,t;
t = k%p;
if(hash[t] == -1)
{
hash[t] = k;
f = t;
}
else if(hash[t] == k)//檢視是否已經記錄
{
f = t;
}
else
{
for(j = 0; j <p; j++)
{
t = (t+1)%p;
if(hash[t] == -1)
{
hash[t] = k;
f = t;
break;
}
else if(hash[t] == k)
{
f = t;
break;
}
}
}
return f;
}
int main()
{
int m,i,j,k,f,t;
while(scanf("%d%d",&n,&p)!=EOF)
{
memset(hash,-1,sizeof(hash));
for(i = 0; i < n; i++)
{
scanf("%d", &k);
f = add(k);
if(i == n-1)
{
printf("%d\n",f);
}
else
{
printf("%d ",f);
}
}
}
return 0;
}
相關文章
- 資料結構之「雜湊表」資料結構
- 【PHP資料結構】雜湊表查詢PHP資料結構
- JAVA資料結構之雜湊表Java資料結構
- 資料結構 - 雜湊表,三探之程式碼實現資料結構
- 【資料結構】查詢結構(二叉排序樹、ALV樹、雜湊技術雜湊表)資料結構排序
- 資料結構,雜湊表hash設計實驗資料結構
- 資料結構——雜湊表資料結構
- js實現資料結構及演算法之雜湊表(Hashtable)JS資料結構演算法
- 資料結構 - 雜湊表,初探資料結構
- 資料結構基礎--雜湊表資料結構
- 資料結構 - 雜湊表,再探資料結構
- Java實現資料結構之線性結構Java資料結構
- 線性表 & 雜湊表
- 04 Javascript資料結構與演算法 之 字典和雜湊表JavaScript資料結構演算法
- 資料結構實驗三:線性表綜合實驗資料結構
- Day76.雜湊表、雜湊函式的構造 -資料結構函式資料結構
- 資料結構(二十八):雜湊表資料結構
- 資料結構雜湊表(c語言)資料結構C語言
- 資料結構基礎學習之線性表資料結構
- 深入剖析Redis系列(六) - Redis資料結構之雜湊Redis資料結構
- JavaScript資料結構——字典和雜湊表的實現JavaScript資料結構
- 【資料結構與演算法學習】雜湊表(Hash Table,雜湊表)資料結構演算法
- iOS標準庫中常用資料結構和演算法之雜湊表iOS資料結構演算法
- 演算法與資料結構——雜湊表演算法資料結構
- 資料結構第十一節(雜湊表)資料結構
- 資料結構:特殊的線性表之 棧 & 佇列資料結構佇列
- 資料結構和演算法-雜湊表 (HashTable)資料結構演算法
- 雜湊技術【雜湊表】查詢演算法 PHP 版演算法PHP
- 資料結構——線性表資料結構
- 資料結構 | 線性表資料結構
- 資料結構-線性表資料結構
- 資料結構—線性表資料結構
- [資料結構] - 線性表資料結構
- 查詢演算法及雜湊表演算法
- 資料結構與演算法之線性結構資料結構演算法
- 資料結構與演算法整理總結---雜湊表資料結構演算法
- 演算法與資料結構1800題 之線性表 (三)演算法資料結構
- Java關於資料結構的實現:雜湊Java資料結構