链表法解决hash冲突[亲测有效]

/*@链表法解决hash冲突*大单元数组,小单元链表*/#pragmaonce#includeusingnamespacestd;templatestructNode{s

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

链表法解决hash冲突[亲测有效]此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

/* @链表法解决hash冲突 * 大单元数组,小单元链表 */ #pragma once  #include <string> using namespace std; template<typename map_t> struct Node { size_t key; map_t content; Node *next; bool isEmpty; Node():next(NULL),isEmpty(true){} }; // 根据hash函数将content添加到hash表中 template<typename map_t> class ListHash { public: ListHash(); ~ListHash(); bool insert(size_t key, const map_t& val); bool find(size_t key, map_t& val); bool erase(size_t key); private: size_t hash(size_t key); private: size_t m_nElementSize; Node<map_t> *m_pNodeArray; }; //////////////////////////实现///////////////////////// template<typename map_t> ListHash<map_t>::ListHash() { m_nElementSize = 3; m_pNodeArray = NULL; m_pNodeArray = new Node<map_t>[m_nElementSize]; } template<typename map_t> ListHash<map_t>::~ListHash() { delete[] m_pNodeArray; m_pNodeArray = NULL; } template<typename map_t> size_t ListHash<map_t>::hash( size_t key ) { return key % m_nElementSize; } template<typename map_t> bool ListHash<map_t>::insert( size_t key, const map_t& val ) { size_t idx = hash(key); Node<map_t> *pNode = &m_pNodeArray[idx]; if (m_pNodeArray[idx].isEmpty) { pNode->key = key; pNode->content = val; pNode->isEmpty = false; pNode->next = NULL; } else { while (pNode->next != NULL) { pNode = pNode->next; } Node<map_t> *pTempNode = new Node<map_t>; pTempNode->key = key; pTempNode->content = val; pTempNode->isEmpty = false; pTempNode->next = NULL; pNode->next = pTempNode; } return true; } template<typename map_t> bool ListHash<map_t>::erase( size_t key ) { size_t idx = hash(key); Node<map_t> *pNode = &m_pNodeArray[idx]; Node<map_t> *pPrepNode = NULL; while (pNode!= NULL) { if (pNode->key == key) { if (pPrepNode) { pPrepNode->next = pNode->next; } delete pNode; return true; } pPrepNode = pNode; pNode = pNode->next; } return false; } template<typename map_t> bool ListHash<map_t>::find( size_t key, map_t& val ) { size_t idx = hash(key); Node<map_t> *pNode = &m_pNodeArray[idx]; while (pNode!= NULL) { if (pNode->key == key) { val = pNode->content; return true; } pNode = pNode->next; } return false; }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120238.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • linux 查看java的pid,linux 查看java进程pid「建议收藏」

    linux 查看java的pid,linux 查看java进程pid「建议收藏」linux查看java进程pid[2021-01-3021:05:24]简介:建站服务器这篇文章主要介绍了linux中如何查看系统进程,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下linux查看端口被哪个进程占用的方法:1、使用“lsof-i:端口号”来查看;2、使用“netstat-tunlp|grep端口号”来查看。linux查看端口被哪个进程占…

  • golang go语言 反向 websocket 代理演示代码

    golang go语言 反向 websocket 代理演示代码golanggo语言反向websocket代理演示代码通过go语言实现websocket反向代理功能packagemainimport( “fmt” “github.com/fasthttp/websocket” “github.com/valyala/fasthttp” proxy”github.com/yeqown/fasthttp-reverse-proxy” “log”)varupgraders=&websocket.FastHTTPUpgrad

  • VSCode删除整行快捷键[通俗易懂]

    VSCode删除整行快捷键[通俗易懂]ctrl+shift+k

  • Django之模板继承

    为了在Django模板配置中减少代码的冗余,需使用模板继承1.语法2.步骤(1)创建一个base.html把需要显示的页面内容写在里面(2)在title部分写个盒子,以后谁来扩展就在这里面

    2021年12月29日
  • stm32H747_mpeg4是什么格式和mp4

    stm32H747_mpeg4是什么格式和mp41.H.264与MPEG的关联 在视频编解码技术定义方面有两大标准机构。一个是国际电信联盟(ITU)致力于电信应用,已经开发了用于低比特率视频电话的H.26x标准,其中包括H.261、H.262、H.263与H.264;另一个是国际标准化组织(ISO)主要针对消费类应用,已经针对运动图像压缩定义了MPEG标准。MPEG标准包括MPEG1、MPEG2与MPEG4。 以制订国际通讯标准为主的国际电信联盟ITU-T,在完成H.263(针对视频会议之用的串流视频标准)后,与IS.

  • springbean生命周期通俗一点_spring为啥是单例模式

    springbean生命周期通俗一点_spring为啥是单例模式一、Spring核心模块介绍1.SpringCore:Core封装包是框架的最基础部分,提供IOC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。2.SpringContext:构建于Core封装包基础上的Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N).

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号