一种支持多关键字快速访问方法和装置制造方法及图纸

技术编号:8980764 阅读:177 留言:0更新日期:2013-07-31 22:51
本发明专利技术提供一种支持多关键字快速访问的方法,建立哈希表,使哈希表包括哈希表头、主数据节点组合、次关键字哈希与主关键字组合,主数据节点组合的键值为主关键字,数据为用户实际数据,次关键字哈希与主关键字组合的内容为次关键字的哈希值和主关键字,从而建立起次关键字与数据的映射;主数据节点组合包括多个主关键字链表,次关键字哈希与主关键字组合包括多个次关键字链表,主关键字链表和次关键字链表对应地链接在哈希表头节点上;所述方法中的访问数据分为主关键字访问数据的流程和次关键字访问数据的流程。本发明专利技术针对所需的不同类型的关键字,有效解决嵌入式设备中,在资源受限的情况下进行多关键字的访问效率问题和资源问题。

【技术实现步骤摘要】

本专利技术涉及一种支持多关键字快速访问方法和装置
技术介绍
通常的嵌入式设备中,由于资源受限,数据结构往往只能采用最简单的链表或者数组进行数据缓存,在进行数据访问时,往往需要遍历所有数据,才能拿到所需要的数据,即使采用可以快速访问的数据结构,由于结构限制,往往只能通过单一关键字进行访问,造成访问效率较低。
技术实现思路
本专利技术要解决的技术问题之一,在于提供一种支持多关键字快速访问方法,针对所需的不同类型的关键字,有效解决嵌入式设备中,在资源受限的情况下进行多关键字的访问效率问题和资源问题。本专利技术是这样实现的:一种支持多关键字快速访问的方法,建立哈希表,使哈希表包括哈希表头、主数据节点组合、次关键字哈希与主关键字组合,所述主数据节点组合的键值为主关键字,数据为用户实际数据,所述次关键字哈希与主关键字组合的内容为次关键字的哈希值和主关键字,从而建立起次关键字与数据的映射;所述主数据节点组合包括多个主关键字链表,所述次关键字哈希与主关键字组合包括多个次关键字链表,所述主关键字链表和次关键字链表对应地链接在哈希表头节点上;所述方法中的访问数据分为主关键字访问数据的流程和次关键字访问数据的流程; 所述主关键字访问数据的流程包括: 步骤11、开始,调用哈希算法计算主关键字的哈希值; 步骤12、计算该哈希值在哈希表中的索引; 步骤13、遍历索引位置下的主关键字链表,查找是否存在与主关键字相等的数据记录,若是,返回数据,若否,则结束; 所述次关键字访问数据的流程包括: 步骤21、开始,调用哈希算法计算次关键字的哈希值, 步骤22、计算该哈希值在哈希表中的索引; 步骤23、获取次关键字链表的第一个数据节点,判断是否到达次关键字链表尾部,若是,就结束,若否,进入步骤24; 步骤24、判断该数据节点的哈希值是否与步骤21中的哈希值相等,若是,根据对应节点的主关键字获取数据,并进入步骤25,若否,则获取下一个次关键字链表的节点,回到步骤23 ; 步骤25、判断是否为待访问的数据,若是,返回数据并结束;若否,则获取下一个次关键字链表的节点,回到步骤23。进一步的,所述哈希表的构造包括初始化哈希表、获取数据、插入所有数据的过程,其中,每插入一条数据的过程包括: 步骤31、开始,计算主关键字的哈希值和插入位置; 步骤32、根据计算所得的插入位置将数据插入主关键字链表; 步骤33、判断是否还需要其他次关键字,若否,则结束,若是,计算该次关键字的哈希值,进入步骤34 ; 步骤34、将哈希值和主关键字形成数据节点并插入到次关键字链表中,回到步骤33。所述哈希表中数据的删除过程包括主关键字的删除过程和次关键字的删除过程; 所述主关键字的删除过程包括: 步骤41、开始,根据主关键字获取数据,即判断数据是否存在,若是,进入步骤42,若否,则结束; 步骤42、判断数据是否还有未处理的次关键字,若是,分别进入步骤43,若否,则进入步骤48 ; 步骤43、计算次关键字的哈希值并定位到对应的哈希位置; 步骤44、获取次关键字链表的第一个节点; 步骤45、判断是否到达次关键字链表的尾部,是,则回到步骤42,若否,进入步骤46 ;步骤46、判断该节点的主关键字与待删除的主关键字是否相等,若是,进入步骤47,若否,进入步骤48 ; 步骤47、从次关键字链表删除该次关键字节点,进入步骤48 ; 步骤48、获取次关键字链表的下一个节点,并回到步骤45 ; 步骤49、从主关键字链表中删除数据后结束; 所述次关键字的删除过程包括: 步骤51、开始,根据次关键字获取对应的数据,即判断数据是否存在,若是,进入步骤52,若否,则结束; 步骤52、获取主关键字,根据主关键字进行删除数据,然后结束。所述哈希表中数据的更改过程包括更改非关键字内容的过程和更改次关键字内容; 所述更改非关键字内容的过程是根据主关键字获取数据;然后修改数据后结束; 所述更改次关键字内容的过程包括: 步骤61、开始,根据主关键字获取数据; 步骤62、根据数据的次关键字定位到对应哈希表头的位置; 步骤63、判断主关键字与待修改的主关键字是否相等,若是,进入步骤64,若否,则结束; 步骤64、从次关键字链表删除该次关键字节点; 步骤65、将主关键字对应的数据节点修改为目标数据; 步骤66、生成次关键字的哈希值,并定位到对应哈希表头索引的位置; 步骤67、将哈希值和主关键字形成数据节点并插入到改表头节点下的次关键字链表后结束。本专利技术要解决的技术问题之二,在于提供一种支持多关键字快速访问装置,在哈希表中,引入多关键字的概念,通过多关键字哈希配合主关键字,针对所需的不同类型的关键字,有效解决嵌入式设备中,在资源受限的情况下进行多关键字的访问效率问题和资源问题。本专利技术是这样实现的:一种支持多关键字快速访问的装置,该装置包括哈希表,所述哈希表包括哈希表头、主数据节点组合、次关键字哈希与主关键字组合,所述主数据节点组合的键值为主关键字,数据为用户实际数据,所述次关键字哈希与主关键字组合的内容为次关键字的哈希值和主关键字,从而建立起次关键字与数据的映射;所述主数据节点组合包括多个主关键字链表,所述次关键字哈希与主关键字组合包括多个次关键字链表,所述主关键字链表和次关键字链表对应地链接在哈希表头节点上。本专利技术具有如下优点:本专利技术在哈希表中引入多关键字的概念,通过次关键字配合主关键字,并结合哈希算法,将次关键字访问转化为与常数级别的主关键字访问,可以有效减少数据缓存,从而减少资源占用,适用于各种类型的环境,尤其是资源受限和性能要求高的嵌入式设备。附图说明下面参照附图结合实施例对本专利技术作进一步的说明。图1为本专利技术哈希·表的数据结构示意图。图2为本专利技术主关键字访问数据的流程图。图3为本专利技术次关键字访问数据的流程图。图4为本专利技术哈希表构造过程的流程图。图5为本专利技术插入数据过程的流程图。图6为本专利技术根据主关键字删除数据过程的流程图。图7为本专利技术根据次关键字删除数据过程的流程图。图8为本专利技术更改非关键字内容的流程图。图9为本专利技术更改次关键字内容的流程图。具体实施方式本专利技术的支持多关键字快速访问的方法,建立哈希表,如图1所示,使哈希表包括哈希表头、主数据节点组合、次关键字哈希与主关键字组合,所述主数据节点组合的键值为主关键字,数据为用户实际数据,所述次关键字哈希与主关键字组合的内容为次关键字的哈希值和主关键字,从而建立起次关键字与数据的映射;所述主数据节点组合包括多个主关键字链表,所述次关键字哈希与主关键字组合包括多个次关键字链表,所述主关键字链表和次关键字链表对应地链接在哈希表头节点上。本专利技术的哈希表与传统的哈希表的区别在于:本专利技术是在传统的哈希表头节点中引入一个新的链接节点,通过次关键字的哈希与主关键字,建立起次关键字与数据的映射,将次关键字的查找和搜索转化为两次哈希查找,提高数据访问效率,同时由于在同一个表内处理,也减少了多个关键字时,由于需要多个关键字快速访问,建立多个映射造成的资源浪费,且在嵌入式设备中,由于资源限制,在非第一关键字的类型较多,如为字符串,存储次关键值的哈希可以有效减少次关键字的占据的存储空间。所述方法中的访问数据分为主关键本文档来自技高网...

【技术保护点】
一种支持多关键字快速访问的方法,其特征在于:建立哈希表,使哈希表包括哈希表头、主数据节点组合、次关键字哈希与主关键字组合,所述主数据节点组合的键值为主关键字,数据为用户实际数据,所述次关键字哈希与主关键字组合的内容为次关键字的哈希值和主关键字,从而建立起次关键字与数据的映射;所述主数据节点组合包括多个主关键字链表,所述次关键字哈希与主关键字组合包括多个次关键字链表,所述主关键字链表和次关键字链表对应地链接在哈希表头节点上;?所述方法中的访问数据分为主关键字访问数据的流程和次关键字访问数据的流程;所述主关键字访问数据的流程包括:步骤11、开始,调用哈希算法计算主关键字的哈希值;步骤12、获取该哈希值在哈希表中的索引;步骤13、遍历索引位置下的主关键字链表,查找是否存在与主关键字对应的数据记录,若是,返回数据,若否,则结束;所述次关键字访问数据的流程包括:步骤21、开始,调用哈希算法计算次关键字的哈希值,步骤22、计算该哈希值在哈希表中的索引;步骤23、获取次关键字链表的第一个数据节点,判断是否到达次关键字链表尾部,若是,就结束,若否,进入步骤24;步骤24、判断该数据节点的哈希值是否与步骤21中的哈希值相等,若是,根据对应节点的主关键字获取数据,并进入步骤25,若否,则获取下一个次关键字链表的节点,回到步骤23;步骤25、判断是否为待访问的数据,若是,返回数据并结束;若否,则获取下一个次关键字链表的节点,回到步骤23。...

【技术特征摘要】
1.一种支持多关键字快速访问的方法,其特征在于:建立哈希表,使哈希表包括哈希表头、主数据节点组合、次关键字哈希与主关键字组合,所述主数据节点组合的键值为主关键字,数据为用户实际数据,所述次关键字哈希与主关键字组合的内容为次关键字的哈希值和主关键字,从而建立起次关键字与数据的映射;所述主数据节点组合包括多个主关键字链表,所述次关键字哈希与主关键字组合包括多个次关键字链表,所述主关键字链表和次关键字链表对应地链接在哈希表头节点上; 所述方法中的访问数据分为主关键字访问数据的流程和次关键字访问数据的流程; 所述主关键字访问数据的流程包括: 步骤11、开始,调用哈希算法计算主关键字的哈希值; 步骤12、获取该哈希值在哈希表中的索引; 步骤13、遍历索引位置下的主关键字链表,查找是否存在与主关键字对应的数据记录,若是,返回数据,若否,则结束; 所述次关键字访问数据的流程包括: 步骤21、开始,调用哈希算法计算次关键字的哈希值, 步骤22、计算该哈希值在哈希表中的索引; 步骤23、获取次关键字链表的第一个数据节点,判断是否到达次关键字链表尾部,若是,就结束,若否,进入步骤24; 步骤24、判断该数据节点的哈希值是否与步骤21中的哈希值相等,若是,根据对应节点的主关键字获取数据,并进入步骤25,若否,则获取下一个次关键字链表的节点,回到步骤23 ; 步骤25、判断是否为待访问的数据,若 是,返回数据并结束;若否,则获取下一个次关键字链表的节点,回到步骤23。2.根据权利要求1所述的一种支持多关键字快速访问的方法,其特征在于:所述哈希表的构造包括初始化哈希表、获取数据、插入所有数据的过程,其中,每插入一条数据的过程包括: 步骤31、开始,计算主关键字的哈希值和插入位置; 步骤32、根据计算所得的插入位置将数据插入主关键字链表; 步骤33、判断是否还需要其他次关键字,若否,则结束,若是,计算该次关键字的哈希值,进入步骤34 ; 步骤34、将哈希值和主关键字形成数据节点并插入到次关键字链表中,回到步骤33。3.根据权利要求2所述的一种支持多关键字快速访问的方法,其特征在于:所述哈希表中数据的删除过程包括主关键字的删除过程和次关键字的删除过程; 所述主关键字的删除过程包括: 步骤41、开始,...

【专利技术属性】
技术研发人员:严柱海
申请(专利权)人:厦门亿联网络技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1