CN102314485A - 哈希表添加、查找和删除方法及装置 - Google Patents
哈希表添加、查找和删除方法及装置 Download PDFInfo
- Publication number
- CN102314485A CN102314485A CN201110212730A CN201110212730A CN102314485A CN 102314485 A CN102314485 A CN 102314485A CN 201110212730 A CN201110212730 A CN 201110212730A CN 201110212730 A CN201110212730 A CN 201110212730A CN 102314485 A CN102314485 A CN 102314485A
- Authority
- CN
- China
- Prior art keywords
- node
- hash
- linked list
- doubly linked
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
一种哈希表添加、查找和删除方法及装置。其中哈希表添加方法包括:提取待添加数据的关键字;对关键字进行哈希运算得到哈希地址及哈希指纹;根据哈希地址判断相应的目标存储位置是否被占用;当目标存储位置被占用时,在哈希表中查找未被占用空闲存储位置,并判断目标存储位置处的占用节点是否为一个双向链表的首节点;若是,则根据哈希指纹,在空闲存储位置添加目标节点,并将该目标节点链接到占用节点所在双向链表的链尾;若否,则将占用节点移动到空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据哈希指纹,在目标存储位置添加目标节点,构成单节点的双向链表。本发明可以提高哈希表的利用效率及存储空间的利用率。
Description
技术领域
本发明涉及一种哈希表添加、查找和删除方法及装置,属于数据处理技术领域。
背景技术
哈希表(Hash Table)也称为散列表,是一种根据数据关键码值(KeyValue)进行直接进行访问的数据结构。传统哈希表通常包含多个具有一定桶深的哈希桶,每个哈希桶都包含了哈希后得到的地址指向该桶的元素。为了使哈希表在冲突存在的情况下达到期望的利用率,通常采用增加哈希桶数量的方式降低冲突率,并采用增加每个哈希桶最大桶深的方式来提高对冲突的容忍度。
对于软件结构下的哈希表,只要处理器有足够的处理能力,上述方式均易于实现;但对于传统硬件结构下的哈希表,不论增加哈希桶的数量,还是增加每个哈希桶的最大深度,都意味着要占用更多的存储资源,而存储资源总是有限的,因此必须在哈希桶的数量及每个哈希桶的最大深度之间做出一种平衡,这就使哈希表的利用效率难以有大的提高。
发明内容
本发明提供一种哈希表添加、查找和删除方法,用以提高哈希表的利用效率及存储空间的利用率。
本发明一方面提供一种哈希表添加方法,其中包括:
提取待添加数据的关键字;
对所述关键字进行哈希运算得到哈希地址及哈希指纹;
根据所述哈希地址判断相应的目标存储位置是否被占用;
当所述目标存储位置被占用时,在所述哈希表中查找未被占用空闲存储位置,并判断所述目标存储位置处的占用节点是否为一个双向链表的首节点;
若是,则根据所述哈希指纹,在所述空闲存储位置添加目标节点,并将该目标节点链接到所述占用节点所在双向链表的链尾;
若否,则将所述占用节点移动到所述空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
本发明另一方面提供一种哈希表查找方法,其中包括:
提取待查找数据的关键字;
对所述关键字进行哈希运算得到哈希地址及哈希指纹;
根据所述哈希地址,在采用如上所述的哈希表添加方法而形成的哈希表中,读取相应目标存储位置处的疑似节点的内容;
当该疑似节点中的哈希指纹与所述关键字的哈希指纹不匹配时,判断所述疑似节点是否为一个双向链表的首节点;
所述疑似节点为一个双向链表的首节点时,对所述疑似节点所在的双向链表进行遍历查找;
当该双向链表中的一个节点的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找。
本发明再一方面提供一种哈希表删除方法,其中包括:
采用如上所述的哈希表查找方法在采用如上所述的哈希表添加方法而形成的哈希表中查找到要删除的目标节点;
将所述目标节点从相应的存储位置删除;
当所述目标节点在双向链表中还链接有后续节点时,将该后续节点在所述双向链表中的位置前移。
本发明又一方面提供一种哈希表添加装置,其中包括:
提取模块,用于提取待添加数据的关键字;
运算模块,用于对提取模块提取出的所述关键字进行哈希运算得到哈希地址及哈希指纹;
第一判断模块,用于根据运算模块得到的所述哈希地址判断相应的目标存储位置是否被占用;
第二判断模块,用于当第一判断模块判断出所述目标存储位置被占用时,在所述哈希表中查找未被占用空闲存储位置,并判断所述目标存储位置处的占用节点是否为一个双向链表的首节点;
第一添加执行模块,用于当第二判断模块的判断结果为是时,根据运算模块得到的所述哈希指纹,在所述空闲存储位置添加目标节点,并将该目标节点链接到所述占用节点所在双向链表的链尾;当第二判断模块的判断结果为否时,将所述占用节点移动到所述空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据运算模块得到的所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
本发明又一方面提供一种哈希表查找装置,其中包括:
提取模块,用于提取待查找数据的关键字;
运算模块,用于对提取模块提取的所述关键字进行哈希运算得到哈希地址及哈希指纹;
读取模块,根据运算模块得到的所述哈希地址,在采用如上所述的哈希表添加方法而形成的哈希表中,读取相应目标存储位置处的疑似节点的内容;
判断模块,用于当读取模块读取的该疑似节点中的哈希指纹与所述关键字的哈希指纹不匹配时,判断所述疑似节点是否为一个双向链表的首节点;
查找模块,用于当判断模块判断出所述疑似节点为一个双向链表的首节点时,对所述疑似节点所在的双向链表进行遍历查找,当该双向链表中的一个节点的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找。
本发明又一方面提供一种哈希表删除装置,其中包括:
查找模块,用于采用如上所述的哈希表查找方法在采用如上所述的哈希表添加方法而形成的哈希表中查找到要删除的目标节点;
删除执行模块,用于将查找模块查找到的所述目标节点从相应的存储位置删除;
移位模块,用于当查找模块查找到的所述目标节点在双向链表中还链接有后续节点时,将该后续节点在所述双向链表中的位置前移。
本发明可以提高哈希表的利用效率及存储空间的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明各实施例中所涉及的哈希表的数据结构示意图;
图2为图1所示哈希表中每个节点的数据结构示意图;
图3A和图3B为图2所示每个节点中各字段大小的说明图;
图4为本发明所述哈希表添加方法实施例的流程图;
图5A~5C为图4所示方法中各步骤的举例示意图;
图6为本发明所述哈希表查找方法实施例的流程图;
图7为本发明所述哈希表删除方法实施例的流程图;
图8为本发明所述哈希表添加装置实施例的结构示意图;
图9为本发明所述哈希表查找装置实施例的结构示意图;
图10为本发明所述哈希表删除装置实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先介绍本发明以下各实施例中所涉及的哈希表的数据结构。
如图1所示,该哈希表是硬件结构下的哈希表,图中的方框中的数字表示哈希地址,圆圈表示链表中的每个节点,直线箭头表示节点与哈希地址之间的对应关系,弧线箭头表示相邻节点之间的链接关系。
如图2所示,每个节点由四个字段组成,每个节点的内容可以表示为{OC,PRE_OFST,POS_OFST,FM},其中:
标志字段(图中表示为:OC):标志当前存储位置是否被占用,“1”表示占用,“0”表示未占用;
指纹字段(图中表示为:FM):存放由哈希算法计算出的当前数据的关键字对应的待检测哈希指纹;
前向指针字段(图中表示为:PRE_OFST):标志在具有相同哈希地址的相邻两个节点中,记录在后一个节点中的、与前一个节点的存储地址距离;
后向指针字段(图中表示为:POS_OFST):标志在具有相同哈希地址的相邻两个节点中,记录在前一个节点中的、与后一个节点的存储地址距离。
例如,图1中,三个相邻的节点T1、M1和H1通过各自的前向指针字段及后向指针字段构成双向链表。
如图3A及图3B所示,每个节点均占用硬件存储器中特定长度的存储空间。在图3A中,每个节点占用32个比特位,其中,每个指针占用4个比特位,因此属于同一个双向链表的相邻节点允许最大跨越15个节点;在图3B中,每个节点占用64个比特位,其中,每个指针占用11个比特位,因此属于同一个双向链表的相邻节点允许最大跨越2047个节点。
图4为本发明所述哈希表添加方法实施例的流程图,如图所示,包括如下步骤:
步骤110,提取待添加数据的关键字。
步骤120,对所述关键字进行哈希运算得到哈希地址及哈希指纹。
具体的哈希运算过程可参考现有技术,其中,得到哈希地址的哈希运算与得到哈希指纹的哈希运算有可能是不同的运算过程。
步骤130,根据所述哈希地址判断相应的目标存储位置是否被占用,当未被占用时,执行步骤140,否则执行步骤150。
具体地,如前所述,可以根据所述目标存储位置的目标节点的标志字段的值确定其存储位置是否被占用。
步骤140,根据所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
具体地,在所述目标节点的指纹字段保存所述哈希指纹,将标示字段的值设置为“1”,将前向指针及后向指针的值均设置为“0”。例如,在进行添加操作之前的哈希表如图1所示,假设一个待添加数据X的关键字通过哈希运算后得到的哈希地址为9,哈希指纹为FMX,如图5A所示,经过步骤140的添加操作后,在地址为9的目标存储位置创建了一个新的双向链表,该双向链表只具有一个节点,即所述目标节点,其内容为{1,0,0,FMX}。
步骤150,在所述哈希表中查找未被占用空闲存储位置,并判断所述目标存储位置处的占用节点是否为一个双向链表的首节点,是则执行步骤151,否则执行步骤152。
其中,占用节点是指占用所述目标存储位置的节点,具体地,当该占用节点的前向指针字段的值为0时,则表明该占用节点之前并不与其他节点相链接,因此该占用节点为双向链表的首节点,否则该占用节点不是双向链表的首节点。具体地,所述空闲存储位置可以是位于所述目标存储位置之后,且距离最近的空闲存储位置。
此处需要说明的是,如果所述双向链表为单节点链表,则可以认为该单节点既为首节点,也为尾节点。
步骤151,根据所述哈希指纹,在所述空闲存储位置添加目标节点,并将该目标节点链接到所述占用节点所在双向链表的链尾。
例如,在进行添加操作之前的哈希表如图1所示,假设一个待添加数据X的关键字通过哈希运算后得到的哈希地址为5,哈希指纹为FMX,如图5B所示,在哈希地址为5的目标存储位置处的占用节点H1为一个双向链表的首节点,因此,经过步骤151的添加操作后,在地址为9的空闲存储位置处添加了目标节点X,并将该目标节点X链接在原先的尾节点T1之后成为新的尾节点。
步骤152,将所述占用节点移动到所述空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
例如,在进行添加操作之前的哈希表如图1所示,假设一个待添加数据X的关键字通过哈希运算后得到的哈希地址为6,哈希指纹为FMX,如图1所示,在哈希地址为6的目标存储位置处的占用节点M1不是一个双向链表的首节点,因此,经过步骤152的添加操作后,如图5C所示,该占用节点T1被移动到地址为9的空闲存储位置,并将该占用节点M1链接到该占用节点M1所在双向链表的链尾成为新的尾节点,这样做的目的是为了空出地址为6的目标存储位置;然后,在地址为6的目标存储位置添加了目标节点X,构成单节点的双向链表。
图6为本发明所述哈希表查找方法实施例的流程图,如图所示,包括如下步骤:
步骤210,提取待查找数据的关键字。
步骤220,对所述关键字进行哈希运算得到哈希地址及哈希指纹。
具体的哈希运算过程可参考现有技术,其中,得到哈希地址的哈希运算与得到哈希指纹的哈希运算有可能是不同的运算过程。
步骤230,根据所述哈希地址,在采用图4所示方法而形成的哈希表中,读取相应目标存储位置处的疑似节点的内容,当该疑似节点中的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找;否则继续执行步骤240。
其中,所述疑似节点是指有可能是要查找的目标节点的节点,如果指纹匹配成功,则可以确定该疑似节点就是目标节点,否则还要继续寻找。
步骤240,判断所述疑似节点是否为一个双向链表的首节点,是则继续执行步骤250,否则查找失败,结束查找。
从上述添加过程可以看出,在图5B中,虽然新添加的节点X占用的是地址为9的存储位置,但该节点X实际上对应的存储位置的地址为5,因此,当所述疑似节点不是一个双向链表的首节点时,表明该疑似节点仅仅是恰巧占用了所述目标存储位置的一个不相关的节点,而非要找的目标节点。而该哈希表中已不可能存在要找的目标节点,因此查找失败。
此处需要说明的是,如果所述双向链表为单节点链表,则可以认为该疑似节点既为首节点,也为尾节点。
步骤250,对所述疑似节点所在的双向链表进行遍历查找,当该双向链表中的一个节点的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功;否则查找失败。
其中,所述遍历查找是指从作为链首的所述疑似节点开始,沿着所述双向链表逐个节点地向后查找。例如,如图5B所示,假设根据所述哈希地址为5,则在该目标存储位置首先找到的疑似节点为节点H1,然后沿着节点H1向后找到节点M1,指纹匹配结果为不匹配,因此继续向后找到节点T1,指纹匹配结果仍然为不匹配;因此继续向后找到节点X,指纹匹配结果为匹配,此时查找成功。
图7为本发明所述哈希表删除方法实施例的流程图,如图所示,包括如下步骤:
步骤310,采用图6所示方法在采用图4所示方法而形成的哈希表中查找到要删除的目标节点。
步骤320,将所述目标节点从相应的存储位置删除。
步骤330,当所述目标节点在双向链表中还链接有后续节点时,将该后续节点在所述双向链表中的位置前移。
其中,所述后续节点是指链接在目标节点之后的节点,进行前移的目的是为了在将目标节点删除后,保持双向链表中余下节点的连续性。
通过采用本发明上述各实施例所述的添加、查找和删除的方法,可以形成具有双向链表的哈希表,适合硬件实现,并在单个查找引擎顺序查找及不增加存储器使用量的前提下,有效解决哈希冲突,提高哈希表的利用效率,并最大限度的利用存储空间,实现大容量的数据存储。
图8为本发明所述哈希表添加装置实施例的结构示意图,能够实现上述哈希表添加方法,如图所示,该哈希表添加装置10包括:提取模块11、运算模块12、第一判断模块13、第二判断模块14、第一添加执行模块15及第二添加执行模块16,其工作原理如下:
首先由提取模块11提取待添加数据的关键字;然后由运算模块12对提取模块11提取出的所述关键字进行哈希运算得到哈希地址及哈希指纹。
此后,第一判断模块13根据运算模块12得到的所述哈希地址判断相应的目标存储位置是否被占用,当第一判断模块13判断出所述目标存储位置未被占用时,由第二添加执行模块16根据运算模块12得到的所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表,具体的举例可参见图5A及其相关说明。
当第一判断模块13判断出所述目标存储位置被占用时,由第二判断模块14在所述哈希表中查找未被占用空闲存储位置,并判断所述目标存储位置处的占用节点是否为一个双向链表的首节点;当第二判断模块14的判断结果为是时,由第一添加执行模块15根据运算模块12得到的所述哈希指纹,在所述空闲存储位置添加目标节点,并将该目标节点链接到所述占用节点所在双向链表的链尾,。
当第二判断模块14的判断结果为否时,由第一添加执行模块15将所述占用节点移动到所述空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据运算模块12得到的所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表,具体的举例可参见图5C及其相关说明。
图9为本发明所述哈希表查找装置实施例的结构示意图,能够实现上述哈希表查找方法,如图所示,该哈希表查找装置20包括:提取模块21、运算模块22、读取模块23、判断模块24及查找模块25,其工作原理如下:
首先由提取模块21提取待查找数据的关键字;然后由运算模块22对提取模块21提取的所述关键字进行哈希运算得到哈希地址及哈希指纹;进而由读取模块23运算模块22得到的所述哈希地址,在采用上述哈希表添加方法而形成的哈希表中,读取相应目标存储位置处的疑似节点的内容。
此后,当读取模块23读取的该疑似节点中的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找;而当当读取模块23读取的该疑似节点中的哈希指纹与所述关键字的哈希指纹不匹配时,继续由判断模块24判断所述疑似节点是否为一个双向链表的首节点。
当判断模块24判断出所述疑似节点为一个双向链表的首节点时,由查找模块25对所述疑似节点所在的双向链表进行遍历查找,当该双向链表中的一个节点的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找;否则查找失败,结束查找;否则,如果判断模块24判断出所述疑似节点为不是一个双向链表的首节点时,则查找失败,结束查找。
图10为本发明所述哈希表删除装置实施例的结构示意图,能够实现上述哈希表删除方法,如图所示,该哈希表删除装置30包括:查找模块31、删除执行模块32及移位模块33,其工作原理如下:
首先由查找模块31采用上述哈希表查找方法在采用上述哈希表添加方面而形成的哈希表中查找到要删除的目标节点;然后由删除执行模块32将查找模块31查找到的所述目标节点从相应的存储位置删除;另外,当查找模块31查找到的所述目标节点在双向链表中还链接有后续节点时,进一步由移位模块33将该后续节点在所述双向链表中的位置前移。
通过采用本发明上述各实施例所述的添加、查找和删除的装置,可以形成具有双向链表的哈希表,适合硬件实现,并在单个查找引擎顺序查找及不增加存储器使用量的前提下,有效解决哈希冲突,提高哈希表的利用效率,并最大限度的利用存储空间,实现大容量的数据存储。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种哈希表添加方法,其特征在于包括:
提取待添加数据的关键字;
对所述关键字进行哈希运算得到哈希地址及哈希指纹;
根据所述哈希地址判断相应的目标存储位置是否被占用;
当所述目标存储位置被占用时,在所述哈希表中查找未被占用空闲存储位置,并判断所述目标存储位置处的占用节点是否为一个双向链表的首节点;
若是,则根据所述哈希指纹,在所述空闲存储位置添加目标节点,并将该目标节点链接到所述占用节点所在双向链表的链尾;
若否,则将所述占用节点移动到所述空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
2.根据权利要求1所述的方法,其特征在于还包括:当所述目标存储位置未被占用时,根据所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
3.一种哈希表查找方法,其特征在于包括:
提取待查找数据的关键字;
对所述关键字进行哈希运算得到哈希地址及哈希指纹;
根据所述哈希地址,在采用权利要求1或2所述方法而形成的哈希表中,读取相应目标存储位置处的疑似节点的内容;
当该疑似节点中的哈希指纹与所述关键字的哈希指纹不匹配时,判断所述疑似节点是否为一个双向链表的首节点;
所述疑似节点为一个双向链表的首节点时,对所述疑似节点所在的双向链表进行遍历查找;
当该双向链表中的一个节点的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找。
4.根据权利要求3所述的方法,其特征在于所述读取相应目标存储位置处的疑似节点的内容之后还包括:当该疑似节点中的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找。
5.根据权利要求3所述的方法,其特征在于还包括:所述疑似节点不是一个双向链表的首节点时,则查找失败,结束查找。
6.一种哈希表删除方法,其特征在于包括:
采用权利要求3~5中任一项所述方法在采用权利要求1或2所述方法而形成的哈希表中查找到要删除的目标节点;
将所述目标节点从相应的存储位置删除;
当所述目标节点在双向链表中还链接有后续节点时,将该后续节点在所述双向链表中的位置前移。
7.一种哈希表添加装置,其特征在于包括:
提取模块,用于提取待添加数据的关键字;
运算模块,用于对提取模块提取出的所述关键字进行哈希运算得到哈希地址及哈希指纹;
第一判断模块,用于根据运算模块得到的所述哈希地址判断相应的目标存储位置是否被占用;
第二判断模块,用于当第一判断模块判断出所述目标存储位置被占用时,在所述哈希表中查找未被占用空闲存储位置,并判断所述目标存储位置处的占用节点是否为一个双向链表的首节点;
第一添加执行模块,用于当第二判断模块的判断结果为是时,根据运算模块得到的所述哈希指纹,在所述空闲存储位置添加目标节点,并将该目标节点链接到所述占用节点所在双向链表的链尾;当第二判断模块的判断结果为否时,将所述占用节点移动到所述空闲存储位置,并将该占用节点链接到该占用节点所在双向链表的链尾,根据运算模块得到的所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
8.根据权利要求7所述的装置,其特征在于还包括:第二添加执行模块,用于当第一判断模块判断出所述目标存储位置未被占用时,根据运算模块得到的所述哈希指纹,在所述目标存储位置添加目标节点,构成单节点的双向链表。
9.一种哈希表查找装置,其特征在于包括:
提取模块,用于提取待查找数据的关键字;
运算模块,用于对提取模块提取的所述关键字进行哈希运算得到哈希地址及哈希指纹;
读取模块,根据运算模块得到的所述哈希地址,在采用权利要求1或2所述方法而形成的哈希表中,读取相应目标存储位置处的疑似节点的内容;
判断模块,用于当读取模块读取的该疑似节点中的哈希指纹与所述关键字的哈希指纹不匹配时,判断所述疑似节点是否为一个双向链表的首节点;
查找模块,用于当判断模块判断出所述疑似节点为一个双向链表的首节点时,对所述疑似节点所在的双向链表进行遍历查找,当该双向链表中的一个节点的哈希指纹与所述关键字的哈希指纹相匹配时,则查找成功,结束查找。
10.一种哈希表删除装置,其特征在于包括:
查找模块,用于采用权利要求3~5中任一项所述方法在采用权利要求1或2所述方法而形成的哈希表中查找到要删除的目标节点;
删除执行模块,用于将查找模块查找到的所述目标节点从相应的存储位置删除;
移位模块,用于当查找模块查找到的所述目标节点在双向链表中还链接有后续节点时,将该后续节点在所述双向链表中的位置前移。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110212730A CN102314485A (zh) | 2011-07-27 | 2011-07-27 | 哈希表添加、查找和删除方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110212730A CN102314485A (zh) | 2011-07-27 | 2011-07-27 | 哈希表添加、查找和删除方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102314485A true CN102314485A (zh) | 2012-01-11 |
Family
ID=45427651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110212730A Pending CN102314485A (zh) | 2011-07-27 | 2011-07-27 | 哈希表添加、查找和删除方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102314485A (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930011A (zh) * | 2012-10-31 | 2013-02-13 | 杭州华三通信技术有限公司 | 流转发表项的处理方法及装置 |
CN103020182A (zh) * | 2012-11-29 | 2013-04-03 | 深圳市新国都技术股份有限公司 | 一种基于hash算法的数据查找方法 |
CN103064948A (zh) * | 2012-12-27 | 2013-04-24 | 中国航空工业集团公司第六三一研究所 | 基于散列链表的内容寻址方法及相应的存储器电路 |
CN103226591A (zh) * | 2013-04-15 | 2013-07-31 | 厦门亿联网络技术股份有限公司 | 一种支持多关键字快速访问方法和装置 |
CN104050279A (zh) * | 2014-06-27 | 2014-09-17 | Tcl集团股份有限公司 | 一种特征匹配的方法、装置及图像识别设备 |
CN104077272A (zh) * | 2014-06-23 | 2014-10-01 | 华为技术有限公司 | 一种字典压缩的方法和装置 |
CN104199966A (zh) * | 2014-09-22 | 2014-12-10 | 杭州电魂网络科技股份有限公司 | 一种桶式链表结构的实现方法 |
CN104363175A (zh) * | 2014-11-21 | 2015-02-18 | 迈普通信技术股份有限公司 | 一种资源表构建方法和装置 |
CN104462328A (zh) * | 2014-12-02 | 2015-03-25 | 深圳中科讯联科技有限公司 | 一种基于哈希表与双循环链表的混合数据管理方法及装置 |
CN104504076A (zh) * | 2014-12-22 | 2015-04-08 | 西安电子科技大学 | 一种高并发和高空间利用率的分布式缓存方法 |
CN110457535A (zh) * | 2019-08-14 | 2019-11-15 | 广州虎牙科技有限公司 | 哈希桶查找方法、哈希表存储、哈希表查找方法和装置 |
CN111597146A (zh) * | 2020-05-20 | 2020-08-28 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN112036851A (zh) * | 2020-09-29 | 2020-12-04 | 东信和平科技股份有限公司 | 一种数字货币的存储装置及其相关处理方法 |
CN112269784A (zh) * | 2020-10-28 | 2021-01-26 | 中科驭数(北京)科技有限公司 | 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 |
CN112948642A (zh) * | 2021-03-30 | 2021-06-11 | 四川九洲电器集团有限责任公司 | 一种嵌入式哈希表及其操作方法、遍历方法和装置 |
CN113312352A (zh) * | 2021-06-03 | 2021-08-27 | 广东湾区智能终端工业设计研究院有限公司 | 数据存储方法、装置、微控制单元和存储介质 |
CN114896177A (zh) * | 2022-05-05 | 2022-08-12 | 北京骏德时空科技有限公司 | 数据存储管理方法、装置、设备、介质和产品 |
CN117349483A (zh) * | 2023-12-05 | 2024-01-05 | 杭州行芯科技有限公司 | 一种寄生参数的查找方法、装置、电子设备及存储介质 |
-
2011
- 2011-07-27 CN CN201110212730A patent/CN102314485A/zh active Pending
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930011A (zh) * | 2012-10-31 | 2013-02-13 | 杭州华三通信技术有限公司 | 流转发表项的处理方法及装置 |
CN102930011B (zh) * | 2012-10-31 | 2016-08-03 | 杭州华三通信技术有限公司 | 流转发表项的处理方法及装置 |
CN103020182B (zh) * | 2012-11-29 | 2016-04-20 | 深圳市新国都技术股份有限公司 | 一种基于hash算法的数据查找方法 |
CN103020182A (zh) * | 2012-11-29 | 2013-04-03 | 深圳市新国都技术股份有限公司 | 一种基于hash算法的数据查找方法 |
CN103064948A (zh) * | 2012-12-27 | 2013-04-24 | 中国航空工业集团公司第六三一研究所 | 基于散列链表的内容寻址方法及相应的存储器电路 |
CN103064948B (zh) * | 2012-12-27 | 2015-08-19 | 中国航空工业集团公司第六三一研究所 | 基于散列链表的内容寻址方法及相应的存储器电路 |
CN103226591A (zh) * | 2013-04-15 | 2013-07-31 | 厦门亿联网络技术股份有限公司 | 一种支持多关键字快速访问方法和装置 |
CN104077272A (zh) * | 2014-06-23 | 2014-10-01 | 华为技术有限公司 | 一种字典压缩的方法和装置 |
CN104077272B (zh) * | 2014-06-23 | 2017-01-04 | 华为技术有限公司 | 一种字典压缩的方法和装置 |
CN104050279A (zh) * | 2014-06-27 | 2014-09-17 | Tcl集团股份有限公司 | 一种特征匹配的方法、装置及图像识别设备 |
CN104050279B (zh) * | 2014-06-27 | 2018-03-06 | Tcl集团股份有限公司 | 一种特征匹配的方法、装置及图像识别设备 |
CN104199966A (zh) * | 2014-09-22 | 2014-12-10 | 杭州电魂网络科技股份有限公司 | 一种桶式链表结构的实现方法 |
CN104363175A (zh) * | 2014-11-21 | 2015-02-18 | 迈普通信技术股份有限公司 | 一种资源表构建方法和装置 |
CN104462328A (zh) * | 2014-12-02 | 2015-03-25 | 深圳中科讯联科技有限公司 | 一种基于哈希表与双循环链表的混合数据管理方法及装置 |
CN104462328B (zh) * | 2014-12-02 | 2018-07-31 | 深圳中科讯联科技有限公司 | 一种基于哈希表与双循环链表的混合数据管理方法及装置 |
CN104504076A (zh) * | 2014-12-22 | 2015-04-08 | 西安电子科技大学 | 一种高并发和高空间利用率的分布式缓存方法 |
CN110457535A (zh) * | 2019-08-14 | 2019-11-15 | 广州虎牙科技有限公司 | 哈希桶查找方法、哈希表存储、哈希表查找方法和装置 |
CN111597146B (zh) * | 2020-05-20 | 2023-04-07 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN111597146A (zh) * | 2020-05-20 | 2020-08-28 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN112036851A (zh) * | 2020-09-29 | 2020-12-04 | 东信和平科技股份有限公司 | 一种数字货币的存储装置及其相关处理方法 |
CN112269784A (zh) * | 2020-10-28 | 2021-01-26 | 中科驭数(北京)科技有限公司 | 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 |
CN112948642A (zh) * | 2021-03-30 | 2021-06-11 | 四川九洲电器集团有限责任公司 | 一种嵌入式哈希表及其操作方法、遍历方法和装置 |
CN113312352A (zh) * | 2021-06-03 | 2021-08-27 | 广东湾区智能终端工业设计研究院有限公司 | 数据存储方法、装置、微控制单元和存储介质 |
CN114896177A (zh) * | 2022-05-05 | 2022-08-12 | 北京骏德时空科技有限公司 | 数据存储管理方法、装置、设备、介质和产品 |
CN117349483A (zh) * | 2023-12-05 | 2024-01-05 | 杭州行芯科技有限公司 | 一种寄生参数的查找方法、装置、电子设备及存储介质 |
CN117349483B (zh) * | 2023-12-05 | 2024-04-09 | 杭州行芯科技有限公司 | 一种寄生参数的查找方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102314485A (zh) | 哈希表添加、查找和删除方法及装置 | |
CN110825748B (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
CN105912687B (zh) | 海量分布式数据库存储单元 | |
CN102222085B (zh) | 一种基于相似性与局部性结合的重复数据删除方法 | |
CN103020315B (zh) | 一种基于主从分布式文件系统的海量小文件存储方法 | |
CN102646070B (zh) | 一种基于区域的时空轨迹数据存储方法 | |
CN101996250B (zh) | 一种基于Hadoop的海量流数据存储和查询方法及系统 | |
CN103345472B (zh) | 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法 | |
CN103019953B (zh) | 一种元数据的构建系统及其方法 | |
CN104156380A (zh) | 一种分布式存储器哈希索引方法及系统 | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN110147204B (zh) | 一种元数据落盘方法、装置、系统及计算机可读存储介质 | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN102142032B (zh) | 一种分布式文件系统的数据读写方法及系统 | |
CN104850572A (zh) | HBase非主键索引构建与查询方法及其系统 | |
CN103631940A (zh) | 一种应用于hbase数据库的数据写入方法及系统 | |
CN102467408A (zh) | 一种虚拟机数据的访问方法和设备 | |
CN103080910A (zh) | 存储系统 | |
CN104408111A (zh) | 一种删除重复数据的方法及装置 | |
CN102890722A (zh) | 应用于时序历史数据库的索引方法 | |
JP2005267600A5 (zh) | ||
CN103678491A (zh) | 一种基于Hadoop中小文件优化和倒排索引的方法 | |
CN102541968A (zh) | 一种索引方法 | |
CN103279532A (zh) | 多集合元素去重并标识所属集合的过滤系统及其方法 | |
CN102521419A (zh) | 分级存储的实现方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120111 |