当前位置: 首页 > news >正文

【模拟散列表】 - 实践

题目

拉链法

#include
using namespace std;
const int N = 1e5+3;
#define null -1
int h[N], ne[N], e[N], idx;
void insert(int x)
{int k = (x % N + N) % N;e[idx] = x;ne[idx] = h[k];h[k] = idx++;
}
bool find(int x)
{int k = (x % N + N) % N;for(int i = h[k]; i != null; i = ne[i]){if(e[i] == x) return true;}return false;
}
int main()
{memset(h, null, sizeof h);int n;scanf("%d", &n);char op[2];int num;for(int i = 1; i <= n; i++){scanf("%s %d", op, &num);int t = find(num);if(op[0] == 'I'){insert(num);}else{if(find(num)) puts("Yes");else puts("No");}}return 0;
}

注意

由于值域大于散射域,存在散射结果相同的情况,但是散射对象的数目是固定的,就是散射域的大小。

h数组用散射结果来访问,ne和e用当前指针来访问或者用h数组的内容来访问

insert函数:首先得到散射结果、然后利用当前指针存储e、结合h[k]和当前指针来头插,修改h[k]值为当前指针,当前指针增加。

find函数:首先得到散射结果、初始化头指针、以-1作为停止条件i = ne[i]作为迭代条件,找到e[i] == x就返回true,不然返回false;

开放寻址法

#include
using namespace std;
const int N = 2e5+3;
#define null 0x3f3f3f3f
int h[N];
int find(int x)
{int i = (x % N + N) % N;while(h[i] != null && h[i] != x){i++;if(i == N) i = 0;}return i;
}
int main()
{memset(h, 0x3f, sizeof h);int n;scanf("%d", &n);char op[2];int num;for(int i = 1; i <= n; i++){scanf("%s %d", op, &num);int t = find(num);if(op[0] == 'I'){h[t] = num;}else{if(h[t] != null) puts("Yes");else puts("No");}}return 0;
}

注意

find函数返回的是空地址或者是x的存在地址。循环条件是(不空)  && (不是)

理解:空了就返回空地址,不空而且是就返回存在地址。

前面储存数值在e,后面在h本身,所以后面不能拿-1来当空指针

http://www.jsqmd.com/news/288386/

相关文章:

  • VIM零基础入门:20个必学命令图解教程
  • 2026 学习桌椅 TOP5 榜单:按“成长适配坐姿引导护眼环保稳固安全智能省心”客观对比
  • 磁翻板液位计生产批发厂家怎么选?2026年高性价比制造商推荐清单
  • PyTorch-2.x环境搭建教程:从镜像拉取到首次运行详细步骤
  • 对比传统开发:XIAOMUSIC如何用AI提升10倍效率
  • 光纤激光打标机十大品牌排行榜与选购建议
  • Open-AutoGLM生产环境部署:高可用架构设计实战
  • 如何提升中文语音识别准确率?Speech Seaco Paraformer热词使用指南
  • 揭秘优质的无纸化会议系统供应商,北京、上海等地靠谱之选大排名
  • 盘点2026年Salesforce 定制开发排名,选哪家比较靠谱
  • 电商网站支付模块遭遇安全上下文错误的实战修复
  • MyBatis Plus vs 原生MyBatis:开发效率对比
  • RabbitMQ面试完全不懂?从零开始的图解指南
  • 2026年秦皇岛西点专业学校排名,哪些值得选?
  • C语言指针开发效率提升秘籍
  • 论文开题“救星”来了!揭秘书匠策AI如何让你的开题报告脱颖而出
  • SSH零基础入门:用GMSSH轻松管理你的第一台服务器
  • 想让google快速收录该做什么?2026年最新实战避坑指南
  • Ubuntu+VSCode打造Python数据分析实战环境
  • 锦湖钢管的无缝钢管好用吗,口碑好的品牌有哪些?
  • 如何用AI快速调用Tushare金融数据API?
  • 快速验证:Overleaf替代方案原型设计
  • DBEAVER驱动设置入门:MySQL连接图解教程
  • 零基础入门:锐捷交换机最常用的20条命令图解
  • YOLO26农业监测应用:无人机作物分析部署案例
  • 学术开题“神器”大揭秘:书匠策AI如何成为你的科研好帮手
  • 2026年环氧丙烯酸树脂过滤洗涤干燥设备厂家推荐
  • 前端新手必看:动态导入错误的简单解决方法
  • node 环境变量引发的问题
  • 传统vsAI:太阳能电池分类效率提升300%的秘诀