資料結構 雜湊表(KV模式)(除留餘數法)

2021-07-12 04:27:31 字數 1434 閱讀 8744

可以實現快速定位查詢資料

思想一:開乙個適當大小的陣列,講需要存入的資料%上陣列的_capacity的到的數作為他存放的位置,如果這個位置被佔了,則在他的下乙個位置存放資料(不會找不到空位置,下面會說到)。

思想二:存放在陣列上的是乙個結構體,結構體包含乙個索引值key,儲存值value,和乙個儲存狀態(列舉型別,exist,empty,delete)可以使用這三種狀態進行判斷和懶人刪除法(不用清除資料,設定為delete狀態即可)。

思想三:開闢空間的問題,初始空間經過資料查詢,開乙個大小為53(質數)大小空間,負載因子為0.7左右時便進行容量的擴充,這時需要進行重新的儲存,因為空間變了所以位置變了。

*負載因子:已使用空間除以總空間大小。

#include  #includeusing namespace std;

enum signtable

;templatestruct package

;template class hashtable

void insert(t t,k k)

size_t key = _returnkey(k);

while (_hashtable[key]._sign == exist)

}_hashtable[key]._myvalue = t;

_hashtable[key]._key = k;

_hashtable[key]._sign = exist;

_size++;

} bool find(k k, t t)

key++;

if (key > _capacity - 1)

if (flag > 1)

}return false;

}bool remove(k k,t t)

key++;

if (key > _capacity - 1)

if (flag > 1)

return false;

} }protected:

void _newcapacity()

}else

size_t k = 0;

while (k<_capacity)

k++;

}newtable._size = _size;;;;;

*this = newtable;

} }size_t _returnkey(k k)

private:

vector> _hashtable;

size_t _capacity;

size_t _size;

};void test1()

int main()

本文出自 「痕跡」 部落格,請務必保留此出處

資料結構 雜湊表

1.雜湊表的定義 元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h key 相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h k 若查詢集合中存在這個記錄,則必定在h k 的位置上,這種查詢技術稱為雜湊技術。採用雜湊技術將記錄儲存在一塊連續的...

資料結構 雜湊表

雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...

資料結構 雜湊表

3 雜湊函式 數字分析法 根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。適用情況 能預先估計出全部關鍵碼的每一位上各種數字出現的頻度,不同的關鍵碼集合需要重新分析。4 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...