雜湊衝突 開雜湊的實現

2021-09-26 20:37:39 字數 985 閱讀 5412

開雜湊解決雜湊衝突的方法是通過key值計算出在雜湊表中的儲存位置,計算方法同之前的閉雜湊一樣,key%capacity的值為在雜湊表中的儲存位置。

若兩個鍵值對計算出來的位置相同,就把這兩個鍵值對通過單鏈表鏈結(頭插的形式)起來儲存在這個位置上,這稱為雜湊桶。鍊錶的頭結點儲存在雜湊表中。

開雜湊的實現:

template struct hashnode

pair_data;

hashnode* _next;

};template class hashtable

bool insert(const pair& data)

//帶頭結點的插入:頭插 _ht[index]--->header

//newnode->next=header

//header=newnode

cur = new node(data);

cur->_next = _ht[index];

_ht[index] = cur;

++_size;

return true;

} void checkcapacity()

_ht[i] = nullptr;

}swap(_ht, newht);

} } pnode find(const k& key)

return nullptr;

} bool erase(const k& key)

else

delete cur;

--_size;

return true;

}parent = cur;

cur = cur->_next;

} }private:

//指標陣列

vector_ht;

size_t _size;

};void testhashtable()

int main()

**測試過啦!!

雜湊衝突 閉雜湊與開雜湊

閉雜湊 也叫開放定址法,當發生雜湊衝突時,如果雜湊表未被裝滿,說明在雜湊表中必然還有空位置,那麼可以把key存放到衝突位置中的 下乙個 空位置中去。include using namespace std 雜湊表每個空間給個標記 empty此位置空,exist此位置已經有元素,delete元素已經刪除...

雜湊錶開雜湊雜湊桶實現

開雜湊法對關鍵碼集合用雜湊函式計算雜湊位址,具有相同位址的關鍵碼歸於同一子集合,每乙個子集合稱為乙個桶,各個桶中的元素通過乙個單鏈表鏈結起來,各鍊錶的頭結點組成 乙個向量,因此,向量的元素個數與可能的桶數一致。include using namespace std namespace openhas...

雜湊表,雜湊衝突

什麼是雜湊表?雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。關鍵字 雜湊函式 雜湊函式 雜湊位址 優點 一對一的查詢...