【模板】哈希表

#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中绑定映射信息,修改之

上一篇:AT266 迷子のCDケース 题解


下一篇:头文件的创建和引用