[发明专利]哈希表添加、查找和删除方法及装置无效
申请号: | 201110212730.4 | 申请日: | 2011-07-27 |
公开(公告)号: | CN102314485A | 公开(公告)日: | 2012-01-11 |
发明(设计)人: | 孙云刚;孙才;陈曦 | 申请(专利权)人: | 中国科学院计算机网络信息中心 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 丁琛;李勇 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 哈希表 添加 查找 删除 方法 装置 | ||
1.一种哈希表添加方法,其特征在于包括:
提取待添加数据的关键字;
对所述关键字进行哈希运算得到哈希地址及哈希指纹;
根据所述哈希地址判断相应的目标存储位置是否被占用;
当所述目标存储位置被占用时,在所述哈希表中查找未被占用空闲存储位置,并判断所述目标存储位置处的占用节点是否为一个双向链表的首节点;
若是,则根据所述哈希指纹,在所述空闲存储位置添加目标节点,并将该目标节点链接到所述占用节点所在双向链表的链尾;
若否,则将所述占用节点移动到所述空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
2.根据权利要求1所述的方法,其特征在于还包括:当所述目标存储位置未被占用时,根据所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
3.一种哈希表查找方法,其特征在于包括:
提取待查找数据的关键字;
对所述关键字进行哈希运算得到哈希地址及哈希指纹;
根据所述哈希地址,在采用权利要求1或2所述方法而形成的哈希表中,读取相应目标存储位置处的疑似节点的内容;
当该疑似节点中的哈希指纹与所述关键字的哈希指纹不匹配时,判断所述疑似节点是否为一个双向链表的首节点;
所述疑似节点为一个双向链表的首节点时,对所述疑似节点所在的双向链表进行遍历查找;
当该双向链表中的一个节点的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找。
4.根据权利要求3所述的方法,其特征在于所述读取相应目标存储位置处的疑似节点的内容之后还包括:当该疑似节点中的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找。
5.根据权利要求3所述的方法,其特征在于还包括:所述疑似节点不是一个双向链表的首节点时,则查找失败,结束查找。
6.一种哈希表删除方法,其特征在于包括:
采用权利要求3~5中任一项所述方法在采用权利要求1或2所述方法而形成的哈希表中查找到要删除的目标节点;
将所述目标节点从相应的存储位置删除;
当所述目标节点在双向链表中还链接有后续节点时,将该后续节点在所述双向链表中的位置前移。
7.一种哈希表添加装置,其特征在于包括:
提取模块,用于提取待添加数据的关键字;
运算模块,用于对提取模块提取出的所述关键字进行哈希运算得到哈希地址及哈希指纹;
第一判断模块,用于根据运算模块得到的所述哈希地址判断相应的目标存储位置是否被占用;
第二判断模块,用于当第一判断模块判断出所述目标存储位置被占用时,在所述哈希表中查找未被占用空闲存储位置,并判断所述目标存储位置处的占用节点是否为一个双向链表的首节点;
第一添加执行模块,用于当第二判断模块的判断结果为是时,根据运算模块得到的所述哈希指纹,在所述空闲存储位置添加目标节点,并将该目标节点链接到所述占用节点所在双向链表的链尾;当第二判断模块的判断结果为否时,将所述占用节点移动到所述空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据运算模块得到的所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
8.根据权利要求7所述的装置,其特征在于还包括:第二添加执行模块,用于当第一判断模块判断出所述目标存储位置未被占用时,根据运算模块得到的所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算机网络信息中心,未经中国科学院计算机网络信息中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110212730.4/1.html,转载请声明来源钻瓜专利网。