#include<iostream>
#include<stdio.h>
using namespace std;
struct hash_tables{
unsigned long long self_code=0;
int self_P=100007;
int self_base=26;
struct sl{
string self_z;
int next;
}e[100007];
int head[100007],cnt;
void clear(){
for(int i=0;i<self_P;i++)
head[i]=0;
cnt=0;
}
int encode(string self_x){
self_code=0;
int len=self_x.size();
for(int i=0;i<len;i++)
self_code*=self_base,
self_code+=self_x[i];
return self_code%self_P;
}
void add(string self_x,int code){
cnt++;
e[cnt].next =head[code];
e[cnt].self_z =self_x;
head[code]=cnt;
}
bool check(string self_x,int code){
for(int i=head[code];i;i=e[i].next)
if(e[i].self_z==self_x)return true;
return false;
}
};
int main(){
hash_tables a;
a.add("Hello! World",a.encode("Hello! World"));
cout<<" "<<a.check("Hello! World",a.encode("Hello! World") );
a.clear();
cout<<" "<<a.check("Hello! World",a.encode("Hello! World") );
return 0;
}
clear函数:清空当前表中所有元素
encode函数:可以自定义,返回传入元素的唯一hash码)
check函数:检查表中元素格式为check(查询的元素,元素的唯一hash码)
add函数:表中插入数据格式为add(查询的元素,元素的唯一hash码)
*使用时可以修改带有self变量名的类型
修改和删除操作可以在结构体sl中绑定映射信息,修改之