|算法讨论|Hash表 学习笔记

本文介绍了一种基于哈希表的数据结构实现方法,包括初始化、插入及查找等基本操作,并通过一个具体的C++程序示例展示了如何处理一组整数的插入与查询任务。

哈希表的基本操作

程序实现输入n,m,分别表示有n个数要插入,有m个询问

每个询问包含一个整数,如果在Hash表里,就输出"True.",否则输出"False."


#include<cstdio>
#include<algorithm>
#include<cstring>
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
const int empt = 100000000;//空的hash表置为inf 
const int p = 13;//hash表大小 
int A[13];//hash表 
void initI()//初始化 
{
	for (int i=1;i<=p;i++) A[i] = empt;
}
int h(int key)//hash函数 
{
	return key % p;
}
int posI(int key)//定位,找到一个位置 
{
	int o = h(key);
	int i = 0;
	while (i<p&&A[(o+i)%p]!=key&&A[(o+i)%p]!=empt) i++;
	return (o+i)%p;
}
void insertI(int key)//插入 
{
	int x = posI(key);
	A[x] = key;
}
bool checkI(int key)//查找 
{
	int x = posI(key);
	if (A[x]==key) return true; 
	return false;
}
int main()
{
	initI();
	int n,m;
	scanf("%d%d", &n, &m);
	for (int i=1;i<=n;i++) 
	{
		int xi;
		scanf("%d", &xi);
		insertI(xi);
	}
	for (int i=1;i<=m;i++) 
	{
		int xi;
		scanf("%d", &xi);
		if (checkI(xi)) printf("True.\n"); else printf("False.\n");
	}
    return 0;
}

转载于:https://www.cnblogs.com/flyinthesky1/p/6384243.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值