開雜湊解決雜湊衝突的方法是通過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 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。關鍵字 雜湊函式 雜湊函式 雜湊位址 優點 一對一的查詢...