公开/公告号CN104462328A
专利类型发明专利
公开/公告日2015-03-25
原文格式PDF
申请/专利权人 深圳中科讯联科技有限公司;
申请/专利号CN201410723293.6
申请日2014-12-02
分类号G06F17/30(20060101);
代理机构深圳市科进知识产权代理事务所(普通合伙);
代理人宋鹰武;沈祖锋
地址 518067 广东省深圳市南山区工业六路创业壹号大楼B栋301室
入库时间 2023-12-18 08:05:40
法律状态公告日
法律状态信息
法律状态
2019-11-26
专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20141202
专利权人的姓名或者名称、地址的变更
2018-07-31
授权
授权
2015-04-22
实质审查的生效 IPC(主分类):G06F17/30 申请日:20141202
实质审查的生效
2015-03-25
公开
公开
技术领域
本发明属于计算机数据管理技术领域,尤其涉及一种基于哈希表与双循环链表的混合数据管理方法及装置。
背景技术
随着文明的进步,科学技术的发展,各种各样的电子设备融入了我们的生活,也使其成为我们生活不可缺少的一部分,给我们生活带来了巨大的便利。特别是大数据的今天,在有限的硬件资源情况下如何有效的管理数据,成为迫切的需求。
在内存数据存储管理中,采用哈希表有利于数据查找,但是对于数据的排序,是无能为力的,采用双循环链表,有利于数据的排序,但是对于数据的查找效率是相当低下的。综上所述,现有内存数据管理方法不能同时高效处理数据排序和查询。
发明内容
本发明实施例提供了一种基于哈希表与双循环链表的混合数据管理方法及装置,旨在解决现有内存数据管理方法不能同时高效处理数据排序和查询的问题。
一方面,提供一种基于哈希表与双循环链表的混合数据管理方法,所述方法包括:
建立与预设参数类型相同数量个哈希表和一双循环链表,并设定每个哈希表的关键码值,所述关键码值与所述预设参数类型一一对应;
建立包括所有哈希表及双循环链表的数据结构;
通过文件、外围设备或无线通讯模块获取混合数据,将所述混合数据以所述数据结构构建若干个数据节点;
将若干个数据节点保存至双循环链表,并将若干个数据节点的链表指针通过哈希表连接。
另一方面,提供一种基于哈希表与双循环链表的混合数据管理装置,所述装置包括:
第一建立单元,用于建立与预设参数类型相同数量个哈希表和一双循环链表,并设定每个哈希表的关键码值,所述关键码值与所述预设参数类型一一对应;
第二建立单元,用于建立包括所有哈希表及双循环链表的数据结构;
数据赋值单元,用于通过文件、外围设备或无线通讯模块获取混合数据,将所述混合数据以所述数据结构构建若干个数据节点;
数据存储单元,用于将若干个数据节点保存至双循环链表,并将若干个数据节点的链表指针通过哈希表连接。
在本发明实施例,建立与预设参数类型相同数量个哈希表和一双循环链表,并设定每个哈希表的关键码值,所述关键码值与所述预设参数类型一一对应;建立包括所有哈希表及双循环链表的数据结构;通过文件、外围设备或无线通讯模块获取混合数据,将所述混合数据以所述数据结构构建若干个数据节点;将若干个数据节点保存至双循环链表,并将若干个数据节点的链表指针通过哈希表连接,本发明,通过高效的内存地址操作方法来进行混合数据的管理,无需数据内容之间的复制与交换,也能避开双循环链表查找数据效率低下的缺点,提高了数据查找效率。
附图说明
图1是本发明实施例一提供的基于哈希表与双循环链表的混合数据管理方法的实现流程图;
图2是本发明实施例一提供的数据结构的示意图;
图3是本发明实施例二提供的基于哈希表与双循环链表的混合数据管理装置的具体结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,建立与预设参数类型相同数量个哈希表和一双循环链表,并设定每个哈希表的关键码值,所述关键码值与所述预设参数类型一一对应;建立包括所有哈希表及双循环链表的数据结构;通过文件、外围设备或无线通讯模块获取混合数据,将所述混合数据以所述数据结构构建若干个数据节点;将若干个数据节点保存至双循环链表,并将若干个数据节点的链表指针通过哈希表连接。
以下结合具体实施例对本发明的实现进行详细描述:
实施例一
图1示出了本发明实施例一提供的基于哈希表与双循环链表的混合数据管理方法的实现流程,详述如下:
在步骤S101中,建立与预设参数类型相同数量个哈希表和一双循环链表,并设定每个哈希表的关键码值,所述关键码值与所述预设参数类型一一对应。
在本实施例中,所述预设参数类型包括了所有可能查询参数的不同数据类型,如文件中读取的、外部设备采集的、网络通讯模块接收的,如果查找参数有很多种,就建立多个相关的哈希表。建立与预设参数类型相同数量个哈希表和一双循环链表,初始化好哈希表与双循环链表头结点,按照数据需求设立好哈希表的关键码值,设定好每个查找参数的关键码值。
在步骤S102中,建立包括所有哈希表及双循环链表的数据结构。
在本实施例中,所述数据结构包括所有哈希表分别对应的若干个变量和双循环链表对应的变量,具体如图2所示,双循环链表对应的变量包括双链表的前向指针*prev、双链表的后向指针*next和数据内容,所有哈希表分别对应的若干个变量N*next_n,其中n大于等于1。
在步骤S103中,通过文件、外围设备或无线通讯模块获取混合数据,将所述混合数据以所述数据结构构建若干个数据节点。
在本实施例中,所述混合数据具体为通过文件、外围设备或无线通讯模块获取的包括多种类型的数据。从文件中读取、外部采集或其他方式获取的混合数据,并将混合数据注意填入到建立好的数据结构中构建若干个数据节点。
在步骤S104中,将若干个数据节点保存至双循环链表,并将若干个数据节点的链表指针通过哈希表连接。
在本实施例中,将若干个数据节点保存至双循环链表,并将若干个数据节点的链表指针通过哈希表连接,即内存中只保存一次数据。
作为一个优选方案,所述方法还包括:接收关联查询参数的查询指令,按照与所述查询参数匹配的预设参数类型对应的关键码值进行相应的数据查询。其中,通过构建各个哈希表的查找函数,根据不同的查询参数,构建不同的查找函数,进行高效地查询。
作为另一个优选方案,所述方法还包括:接收排序指令,按照双循环链表遍历,如果需要调整排序,则对换两者的双链表指针数据。其中,通过构建双循环链表的排序函数,排序函数中如若两个节点需交换位置,则只需改变他们双链表指针数据,无需交换数据内容,若有多种排序参数,则需构建多种排序函数,排序过程中无需复制数据,则可节省大量的CPU时间。
另外,所述方法还包括以下三种可行方案:
第一种可行方案是,接收携带新数据的增加指令,将新数据以所述数据结构构建新的数据节点,将新的数据节点添加至双循环链表,并将新的数据节点的链表指针保存至哈希表。其中,通过构建数据节点增添节点函数,需要将新数据一一添加双循环链表中,将新数据的链表指针保存到哈希表。
第二种可行方案是,接收关联删除数据的删除指令,将双循环链表和哈希表中指向所述删除数据的节点指针地址修改为所述删除数据的下一个数据节点或上一个数据节点。其中,构建数据删除函数,需要将哈希表和双循环链表中指向该数据节点的指针地址更改为该数据的下一个数据或上一个数据的地址。
第三种可行方案是,接收关联修改数据的修改指令,索引所述修改数据对应的哈希表,找出对应的数据节点并以修改数据进行修改。其中,通过构建修改数据函数,根据传入的数据节点查找修改参数,索引对应的哈希表,找出该数据节点,然后即可修改。
本实施例,通过高效的内存地址操作方法来进行混合数据的管理,无需数据内容之间的复制与交换,也能避开双循环链表查找数据效率低下的缺点,提高了数据查找效率。
实施例二
图3示出了本发明实施例二提供的基于哈希表与双循环链表的混合数据管理装置的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。在本实施例中,该基于哈希表与双循环链表的混合数据管理装置包括:第一建立单元31、第二建立单元32、数据赋值单元33、数据存储单元34、数据查询单元35、数据排序单元36、数据增加单元37、数据删除单元38和数据修改单元39。
其中,第一建立单元31,用于建立与预设参数类型相同数量个哈希表和一双循环链表,并设定每个哈希表的关键码值,所述关键码值与所述预设参数类型一一对应;
第二建立单元32,用于建立包括所有哈希表及双循环链表的数据结构;
数据赋值单元33,用于通过文件、外围设备或无线通讯模块获取混合数据,将所述混合数据以所述数据结构构建若干个数据节点;
数据存储单元34,用于将若干个数据节点保存至双循环链表,并将若干个数据节点的链表指针通过哈希表连接。
进一步地,所述方法还包括:
数据查询单元35,用于接收关联查询参数的查询指令,按照与所述查询参数匹配的预设参数类型对应的关键码值进行相应的数据查询。
进一步地,所述方法还包括:
数据排序单元36,用于接收排序指令,按照双循环链表遍历,如果需要调整排序,则对换两者的双链表指针数据。
进一步地,所述方法还包括:
数据增加单元37,用于接收携带新数据的增加指令,将新数据以所述数据结构构建新的数据节点,将新的数据节点添加至双循环链表,并将新的数据节点的链表指针保存至哈希表;
数据删除单元38,用于接收关联删除数据的删除指令,将双循环链表和哈希表中指向所述删除数据的节点指针地址修改为所述删除数据的下一个数据节点或上一个数据节点;
数据修改单元39,用于接收关联修改数据的修改指令,索引所述修改数据对应的哈希表,找出对应的数据节点并以修改数据进行修改。
本发明实施例提供的基于哈希表与双循环链表的混合数据管理装置可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 一种用于基于哈希表消除数据重复的存储系统
机译: 基于云的传感数据管理装置及基于云的传感数据管理方法
机译: 基于列的数据管理方法和装置,以及基于列的数据搜索方法