hash哈希表自创clas

1.哈希表的概念

哈希表(Hash table,也叫散列表),是根据关键码值(Key-value)而直接访问在内存存储位置的数据结构。也就是说,它通过把键值通过一个函数的计算,映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做哈希函数,存放记录的数组称做哈希表

哈希函数:也称为是散列函数,是Hash表的映射函数,它可以把任意长度的输入变换成固定长度的输出,该输出就是哈希值。通过使用哈希函数来确定元素在哈希表的存储位置,哈希函数能使对一个数据序列的访问过程变得更加迅速有效,通过哈希函数,数据元素能够被很2快的进行定位。

2.哈希表的代码

2.1.添加

void increase(long long data){//定义函数
	int now_key=(data+int_MAX_prime)%int_MAX_prime;//确定大概的位置
	while(hash[now_key]!=-1)now_key=(now_key+1)%int_MAX_prime;//线性搜索添加
	hash[now_key]=data;//搜索到位置之后就添加
	return ;//函数结束
}

2.2.去除

void reduced(long long data){//定义函数
	int now_key=(data+int_MAX_prime)%int_MAX_prime;//找到大概位置
	while(hash[now_key]!=data){//开始循环线性搜索
		if(hash[now_key]==-1)return ;//如果没有就退出
		now_key=(now_key+1)%int_MAX_prime;//搜索下一个
	}hash[now_key]=-1;//去除
	return ;//函数结束
}

2.3.查找下标

int find(long long data){//定义函数
	int now_key=(data+int_MAX_prime)%int_MAX_prime;//确定大概位置
	while(hash[now_key]!=data){//开始线性搜索
		if(hash[now_key]==-1)return -1;//没找到就返回-1
		now_key=(now_key+1)%int_MAX_prime;//搜索下一个
	}return now_key;//返回位置+函数结束
}

2.4.查找存在

bool count(long long data){//定义函数
	int now_key=(data+int_MAX_prime)%int_MAX_prime;//确定大概位置
	while(hash[now_key]!=data){//开始线性搜索
		if(hash[now_key]==-1||(hash[now_key]+int_MAX_prime)%int_MAX_prime!=(data+int_MAX_prime)%int_MAX_prime)return false;//没找到就返回没找到
		now_key=(now_key+1)%int_MAX_prime;//搜索下一个
	}return true;//返回找到了+函数结束
}

2.5.判空

bool empty(){//创建函数
	for(int i=0;i<int_MAX_prime;i++)if(hash[i]!=-1)return false;//有数就返回有数
	return true;//放回空的+函数结束
}

2.6.长度

size_t size(){//创建函数
	unsigned long long numeral=0;//创建点数的变量 /!\注:只有64位藏能用long long,32位用int,16位用short,否则电脑容易报废
	for(int i=0;i<int_MAX_prime;i++)if(hash[i]!=-1)numeral++;//点数中
	return numeral;//返回数量+函数结尾
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值