【模拟散列表】 - 实践

news/2026/1/23 10:57:02/文章来源:https://www.cnblogs.com/yangykaifa/p/19521008

题目

拉链法

#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.mzph.cn/news/1204564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VIM零基础入门:20个必学命令图解教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个交互式VIM学习网页应用&#xff0c;通过可视化方式教学基础VIM命令。应用应包含实时编辑区域&#xff0c;用户可以看到按键操作和文本变化的对应关系。采用游戏化设计&…

2026 学习桌椅 TOP5 榜单:按“成长适配坐姿引导护眼环保稳固安全智能省心”客观对比

2026 学习桌椅 TOP5 榜单:按“成长适配坐姿引导护眼环保稳固安全智能省心”客观对比 先给结论(只看排名也够用): TOP5 品牌排名与综合评分(100 分制)博士有成|98.2 护童|94.3 光明园迪|93.1 爱果乐|91.8 心家…

快速验证:用AI半小时做出PDF产品原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个以日为鉴PDF订阅服务的MVP原型。功能包括&#xff1a;1. 用户注册界面 2. 每日主题选择&#xff08;如管理/历史/个人成长&#xff09; 3. AI生成定制化PDF 4. 模拟邮件发…

PyTorch-2.x环境搭建教程:从镜像拉取到首次运行详细步骤

PyTorch-2.x环境搭建教程&#xff1a;从镜像拉取到首次运行详细步骤 1. 镜像简介与核心优势 你拿到的这个镜像是 PyTorch-2.x-Universal-Dev-v1.0&#xff0c;名字里的“Universal”不是虚的——它不是某个特定任务的定制快照&#xff0c;而是一个真正开箱即用的通用深度学习…

磁翻板液位计生产批发厂家怎么选?2026年高性价比制造商推荐清单

磁翻板液位计作为工业自动化领域的核心测量设备,凭借直观显示、安全可靠、维护简便等优势,已广泛替代传统玻璃板液位计,成为石油、化工、电力、制药等行业液位就地指示的理想选择。本文将系统介绍河北光科测控设备有…

对比传统开发:XIAOMUSIC如何用AI提升10倍效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个音乐分类效率对比Demo&#xff1a;1. 传统方式&#xff1a;手动标注1000首歌曲的流派&#xff1b;2. AI方式&#xff1a;使用预训练模型自动分类相同歌曲&#xff1b;3. 对…

Open-AutoGLM生产环境部署:高可用架构设计实战

Open-AutoGLM生产环境部署&#xff1a;高可用架构设计实战 Open-AutoGLM 是智谱开源的一款面向手机端的 AI Agent 框架&#xff0c;旨在通过多模态理解与自动化操作能力&#xff0c;实现自然语言驱动的智能设备控制。它将视觉语言模型&#xff08;VLM&#xff09;与 Android 调…

光纤激光打标机十大品牌排行榜与选购建议

激光加工技术作为先进制造领域的核心技术之一,在过去十年中实现了跨越式发展。根据《中国激光产业发展报告》数据,中国激光设备市场销售收入已连续多年保持两位数增长,其中工业激光设备占据主导地位。光纤激光器作为…

如何提升中文语音识别准确率?Speech Seaco Paraformer热词使用指南

如何提升中文语音识别准确率&#xff1f;Speech Seaco Paraformer热词使用指南 1. 为什么热词是提升识别准确率的关键突破口&#xff1f; 你有没有遇到过这样的情况&#xff1a;会议录音里反复出现“Paraformer”“FunASR”“达摩院”&#xff0c;但系统却识别成“怕拉佛玛”…

揭秘优质的无纸化会议系统供应商,北京、上海等地靠谱之选大排名

2026年数字化办公浪潮席卷全球,无纸化会议系统已成为政企机构、跨国企业提升会议效率、降低运营成本、践行绿色办公的核心基础设施。无论是稳定通信与高兼容性的系统方案、智能功能与体验的定制化产品,还是便捷安装与…

盘点2026年Salesforce 定制开发排名,选哪家比较靠谱

在数字化转型的浪潮中,Salesforce作为全球领先的客户关系管理平台,已成为企业打通客户数据、优化业务流程的核心工具。然而,市场上Salesforce服务商鱼龙混杂,如何找到既专业又高性价比的合作伙伴?以下结合企业需求…

MyBatis Plus vs 原生MyBatis:开发效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 分别用原生MyBatis和MyBatis Plus实现相同的用户管理模块CRUD功能&#xff0c;包括&#xff1a;1) 用户注册 2) 登录验证 3) 信息修改 4) 条件查询。对比两者代码量、开发时间和性…

电商网站支付模块遭遇安全上下文错误的实战修复

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个电商支付页面安全上下文错误模拟与修复演示项目。包含&#xff1a;1. 故意设计触发错误的HTTP/HTTPS混合加载场景 2. 支付iframe与父页面安全策略冲突模拟 3. 分步骤可视化…

RabbitMQ面试完全不懂?从零开始的图解指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个面向RabbitMQ初学者的交互式学习工具&#xff0c;通过可视化方式讲解核心概念。包含&#xff1a;1) 动态演示消息队列工作流程 2) 可交互的Exchange类型比较图表 3) 逐步引…

论文开题“救星”来了!揭秘书匠策AI如何让你的开题报告脱颖而出

对于许多科研新手来说&#xff0c;撰写开题报告就像面对一座难以攀登的高山——选题缺乏创新性、文献综述杂乱无章、研究方法模糊不清……这些问题常常让人陷入“开题焦虑”。别担心&#xff01;今天我们要介绍的书匠策AI&#xff08;官网&#xff1a;www.shujiangce.com&#…

2026年秦皇岛西点专业学校排名,哪些值得选?

2026年烘焙餐饮行业持续升温,兼具专业技艺与市场适配性的西点人才成为行业竞争的核心资源。无论是想零基础入行的新手、寻求技能进阶的从业者,还是计划创业的梦想者,选择一所贴着行业走的西点专业学校,直接决定了技…

C语言指针开发效率提升秘籍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个C语言指针应用&#xff0c;重点展示快速开发流程和效率优势。点击项目生成按钮&#xff0c;等待项目生成完整后预览效果 C语言指针开发效率提升秘籍 最近在做一个C语言项…

SSH零基础入门:用GMSSH轻松管理你的第一台服务器

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个面向新手的SSH管理工具GMSSH&#xff0c;功能包括&#xff1a;1. 图形化服务器连接向导&#xff1b;2. 交互式SSH命令学习模块&#xff1b;3. 安全设置自动检测和建议&…

想让google快速收录该做什么?2026年最新实战避坑指南

做外推的朋友在2026年最头疼的莫过于两件事&#xff1a;一是流量变贵&#xff0c;二是收录变慢。你可能辛辛苦苦写了篇文章&#xff0c;自我感觉良好&#xff0c;结果扔进网站半个月&#xff0c;Search Console里的状态依然是“已发现 - 未编入索引”。别急&#xff0c;这不是你…

Ubuntu+VSCode打造Python数据分析实战环境

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Python数据分析项目的VSCode环境配置指南。要求&#xff1a;1. 详细说明Ubuntu下Python环境安装&#xff1b;2. 配置VSCode的Python扩展&#xff1b;3. 集成Jupyter Noteb…