hash table(开放寻址法-二次探查实现的哈希表)
#ifndef C11LEARN_HASHQUADRATIC_H
#define C11LEARN_HASHQUADRATIC_H
#include "HashLiner.h"
template<typename T>
class HashQuadratic:public HashLiner<T>
{
public:HashQuadratic(int c1 = 1,int c2 = 2);
protected:int c1;int c2;
protected:virtual int hashing(int key,int index);
};
template<typename T>
HashQuadratic<T>::HashQuadratic(int c1, int c2):HashLiner<T>(),c1(c1),c2(c2) {}
template<typename T>
int HashQuadratic<T>::hashing(int key,int index){return (HashQuadratic<T>::auxiliary_hashing(key)+c1*index+c2*index*index)%HashLiner<T>::capacity;
}
#endif //C11LEARN_HASHQUADRATIC_H
测试代码
HashQuadratic<string> hashQuadratic;hashQuadratic[2] = "hello";hashQuadratic[123456] = "world";cout << hashQuadratic[2] << endl;cout << hashQuadratic[123456] << endl;HashQuadratic<string> hashQuadratic1 = hashQuadratic;cout << hashQuadratic1[2] << endl;cout << hashQuadratic1[123456] << endl;HashQuadratic<string> hashQuadratic2;hashQuadratic2 = hashQuadratic;cout << hashQuadratic2[2] << endl;cout << hashQuadratic2[123456] << endl;
辅助类
HashLiner链接地址