可以實現快速定位查詢資料
思想一:開乙個適當大小的陣列,講需要存入的資料%上陣列的_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 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...