哈希表的基础算法
#include<iostream>
using namespace std;
//哈希表结点类定义
//这段代码定义了一个名为HashNode的模板类,用于哈希表中的结点,其中每个结点存储一个键值对。
//哈希表结点类
template<typename KeyType,typename ValueType>//模板声明,用于定义一个通用的类模板,可以用于处理不同类型的键KeyType和值ValueType
class HashNode {
public:
KeyType key;//存储结点的键
ValueType value;//存储结点的值
HashNode* next;//指向哈希表中下一个结点的指针
//构造函数用于创造一个新的HashNode对象,并初始化其成员变量。
//它接受两个参数:键和值,并将它们分别赋值给key和value成员变量,next成员变量初始化为NULL
HashNode(const KeyType& key, const ValueType& value) {
this->key = key;
this->value = value;
this->next = NULL;
}
};
//哈希表类的声明
//这段代码定义了一个名为HashTable的模板类,用于实现哈希表
//哈希表类
template<typename KeyType,typename ValueType>
class HashTable {
private:
int size;//表示哈希表的大小,即哈希表中可以存储的结点数量
HashNode<KeyType, ValueType>** table;//是一个指向HashNode<KeyType, ValueType>类型的指针数组,用于存储哈希表中的结点
//哈希函数
int hash(const KeyType& key) const {
int hashkey = key % size;
if (hashkey < 0)hashkey += size;
return hashkey;