[发明专利]一种实现进程间AVL树使用的方法及系统在审
申请号: | 201710832110.8 | 申请日: | 2017-09-15 |
公开(公告)号: | CN107656993A | 公开(公告)日: | 2018-02-02 |
发明(设计)人: | 葛世飞 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 杭州千克知识产权代理有限公司33246 | 代理人: | 周希良,吴辉辉 |
地址: | 201616 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 进程 avl 使用 方法 系统 | ||
技术领域
本发明涉及AVL算法技术领域,尤其涉及一种实现进程间AVL树使用的方法及系统。
背景技术
在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。
AVL树的查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树是一种效率较高的数据结构,应用比较广泛。
但由于AVL树采用“指针”管理左右子节点,而在现代操作系统中各进程的地址空间是独立的,这意味着“指针”在进程间是无效的,所以现有技术的AVL树不能在进程间使用。
传统的AVL树通过指针管理左右子节点,它的核心数据结构如下:
如图1所示,图1是传统技术中AVL树示意图。
AVL树中每一个节点抽象成AVL节点数据结构,该数据结构内存通过malloc函数分配,malloc函数返回的地址是本进程用户空间中的虚拟地址。每棵树有一个根节点称为root AVLNode,根节点root AVLNode数据结构中指针lchild指向该节点的左子节点,rchild指向该节点的右子节点,如果子节点不存在,则指向NULL。每个节点AVLNode都有一个值,如图1中根节点的值为55,各个节点根据值决定在AVL树中的位置,左子节点的值小于根节点,右子节点的值大于根节点。
公开号为CN102521334A的专利提供了一种基于分类特性和平衡二叉树的数据存储、查询方法,通过构建平衡二叉树,创建结点;可以按照3种顺序:中序、前序、后续遍历规则,动态地将数据信息分类存储到相应结点;输入查询内容,动态遍历AVL树,得到所需的数据信息。本发明将动态查询的时间复杂度降低到静态查询级别,大大提高了存储和查询的效率,具有速度快、能耗低、占内存少、算法简单的优点,而且可用多种语言实现。该方法广泛适用于通信领域中的数据管理,尤其是物联网通信中大数据量的数据存储和查询。但是该方法是通过指针管理左右子节点,不能在进程间使用。
发明内容
本发明要解决的技术问题目的在于提供一种实现进程间AVL树使用的方法及系统,用以解决现有的AVL树的操作系统不能在进程间使用的问题。
为了实现上述目的,本发明采用的技术方案为:
一种实现进程间AVL树使用的方法,包括步骤:
S1、依次分配进程间AVL树节点的值;
S2、按顺序确定所述进程间AVL树节点的索引值;
S3、根据所述进程间AVL节点的值及所述索引值建立共享内存;
S4、将所述共享内存映射到各进程的本地进程地址空间。
进一步地,步骤S3中,通过shm_open函数建立所述进程间AVL树的共享内存。
进一步地,步骤S4中,通过mmap函数映射到各进程的本地进程地址空间。
进一步地,还包括步骤:
通过lchild值管理所述进程间AVL树的左子节点;所述lchild值对应左子节点的索引值。
进一步地,还包括步骤:
通过rchild值管理所述进程间AVL树的右子节点;所述rchild值对应右子节点的索引值。
一种实现进程间AVL树使用的系统,包括:
分配模块,用于依次分配进程间AVL树节点的值;
编号模块,用于按顺序确定所述进程间AVL树节点的索引值;
建立模块,用于根据所述进程间AVL节点的值及所述索引值建立共享内存;
映射模块,用于将所述共享内存映射到各进程的本地进程地址空间。
进一步地,所述建立模块具体用于通过shm_open函数建立所述进程间AVL树的共享内存。
进一步地,所述映射模块具体用于通过mmap函数映射到各进程的本地进程地址空间。
进一步地,还包括:
左指针模块,用于通过lchild值管理所述进程间AVL树的左子节点;所述lchild值对应左子节点的索引值。
进一步地,还包括:
右指针模块,用于通过rchild值管理所述进程间AVL树的右子节点;所述rchild值对应右子节点的索引值。
本发明与传统的技术相比,有如下优点:
本发明用共享内存的索引值管理左右子节点代替传统的指针管理左右子节点,实现在进程间采用AVL树管理各个节点。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710832110.8/2.html,转载请声明来源钻瓜专利网。