1. 程式人生 > >實驗 雜湊表線性探測再雜湊

實驗 雜湊表線性探測再雜湊

將上面的資料利用長度為15的雜湊表儲存,輸出儲存後的雜湊表。雜湊函式採用key%13,用線性探測再雜湊解決衝突,設計並實現查詢運算。

程式碼:

#include <bits/stdc++.h>
using namespace std;
const int MAXN=15;
typedef struct HashList{
    int elem[MAXN],mod;
    HashList(){
        for(int i=0;i<MAXN;i++) elem[i]=-1;
        mod=13;
    }
public:
    int Insert(int x){
        int pos=x%mod;
        while(elem[pos]!=-1) pos=(pos+1)%mod;
        elem[pos]=x;
        return pos;
    }
    void show(){
        for(int i=0;i<mod;i++)
            cout<<elem[i]<<' ';
        cout<<endl;
    }
    int Find(int x){
        int pos=x%mod;
        while(elem[pos]!=x) pos=(pos+1)%mod;
        elem[pos]=x;
        return pos;
    }
}HashList;
int main()
{
    srand((unsigned long long)time(0));
    int a[10]={90 ,92 ,41 ,2 ,4 ,29 ,73 ,87 ,11 ,77};
    HashList b;
    for(int i=0;i<10;i++){
        b.Insert(a[i]);
        b.show();
    }
    cout<<a[3]<<' '<<b.Find(a[3])<<endl;
}