元素存储方法及装置的制造方法

文档序号:9417299阅读:481来源:国知局
元素存储方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,具体而言,涉及一种元素存储方法及装置。
【背景技术】
[0002]二叉查找树是一种数据结构,主要用于快速查询一个元素是否存在于某一个集合中。传统的二叉查找树是基于动态分配内存的方式实现的,即集合中的每个元素的存放位置在内存中都是不连续的。当需要向内存中添加新元素时,动态分配一块内存用于存放新的元素,同理,当需要删除元素时,也是动态的释放该元素占用的内存。
[0003]图1为相关技术中向内存中添加元素的效果图。如图1所示,集合中总共有5个元素(编号为I?5),每个元素由三部分(左边长方形图案代表元素本身,右边的两个正方形分别表示它两个后续元素的内存地址,即图中的箭头符号,当不存在后续元素时,用向右斜杠表示)构成。
[0004]最开始的时候,集合是空的,图1是5次添加操作后的效果图,由于添加的时候是采用动态分配内存的方式,所以可以看见元素在内存中不是连续存放的,当需要删除元素时,释放掉元素相应的内存即可。
[0005]经过这样大量的添加和删除元素操作后,内存中会出现大量的内存碎片(碎片的大小等于元素删除前占用的内存大小),导致当操作系统需要一块大于碎片大小的内存时,这些碎片都不能满足需求,从而这些碎片得不到利用。

【发明内容】

[0006]本发明的主要目的在于公开了一种元素存储方法及装置,以至少解决相关技术中基于动态分配内存,经过这样大量的添加和删除元素操作后,内存中会出现大量的内存碎片的问题。
[0007]根据本发明的一个方面,提供了一种元素存储方法。
[0008]根据本发明的元素存储方法包括:预先分配一整块预定大小的内存;对于需要存储集合中的每个元素,将该元素存储至所述内存当前的第一个空闲位置;当所述内存被占用完时,继续分配一整块预定大小的内存以存储所述集合中的元素,直至存储完所述集合中的所有元素。
[0009]根据本发明的另一方面,提供了一种元素存储装置。
[0010]根据本发明的元素存储装置包括:第一分配模块,用于预先分配一整块预定大小的内存;存储模块,用于对于需要存储集合中的每个元素,将该元素存储至所述内存当前的第一个空闲位置;第二分配模块,用于当所述内存被占用完时,继续分配一整块预定大小的内存以存储所述集合中的元素,直至存储完所述集合中的所有元素。
[0011]与现有技术相比,本发明实施例至少具有以下优点:预先分配一定容量内存(静态分配)的方式,能有效的减少传统方式造成的计算机内存碎片浪费,提高系统性能,特别是在小型机,如单片机,手机等设备中效果显著。
【附图说明】
[0012]图1为相关技术中向内存中添加元素的效果图;
[0013]图2是根据本发明实施例的元素存储方法的流程图;
[0014]图3是根据本发明优选实施例的向内存中添加元素的效果图;
[0015]图4是根据本发明实施例的元素存储装置的结构框图;
[0016]图5是根据本发明优选实施例的元素存储装置的结构框图。
【具体实施方式】
[0017]下面结合说明书附图对本发明的具体实现方式做一详细描述。
[0018]图2是根据本发明实施例的元素存储方法的流程图。如图2所示,该元素存储方法包括以下处理:
[0019]步骤S201:预先分配一整块预定大小的内存;
[0020]步骤S203:对于需要存储集合中的每个元素,将该元素存储至上述内存当前的第一个空闲位置;
[0021]步骤S205:当上述内存被占用完时,继续分配一整块预定大小的内存以存储上述集合中的元素,直至存储完上述集合中的所有元素。
[0022]采用图2所示的方法,预先分配一定容量内存(静态分配)的方式,能有效的减少传统方式造成的计算机内存碎片浪费,提高系统性能,特别是在小型机,如单片机,手机等设备中效果显著。
[0023]其中,上述集合中的各个元素均可以包括但不限于:元素本身,该元素的两个后续元素的数组下标。
[0024]优选地,上述方法还可以包括以下处理:当需要删除上述集合中的一个或多个元素时,仅删除上述一个或多个元素,不将上述一个或多个元素占用的内存释放掉。
[0025]因而,元素占用的内存还是属于集合,不会返还给系统,不会造成内存碎片,这样就避免了由于存放元素的内存不连续产生的内存碎片浪费。
[0026]以下结合图3进一步描述上述优选实施方式。
[0027]图3是根据本发明优选实施例的向内存中添加元素的效果图。如图3所示,一个集合中,包括5个元素(node O,node I,node 2,node 3,node 4)。其中,每个元素包括三部分:最左侧的长方形图案表示元素本身,右侧的两个正方形表示该元素两个后续元素的数组下标。
[0028]如图3示,本发明实施例采用了连续的存放方式,即提前分配一块相对较大的内存(数组),需要增加元素时,添加到预先分配好的内存的第一个空闲位置即可,当提前分配的内存用完时,继续分配一整块预定大小的内存以存储上述集合中的元素,例如,可以将数组扩大一倍。当需要删除元素时,元素占用的内存还是属于集合,不会返还给系统,不会造成内存碎片,这样就避免了由于存放元素的内存不连续产生的内存碎片浪费。
[0029]优选地,步骤S205中存储完上述集合中的所有元素之后,还可以包括以下处理:
[0030]步骤A,当需要查找当前元素是否属于上述集合时,比较上述集合中的第一个元素的元素本身与当前元素的大小,根据比较结果,获取第一个元素的两个后续元素的数组下标中的一个下标值;
[0031]步骤B,确定与上述获取的下标值对应的元素,比较上述对应的元素与上述当前元素的大小,根据比较结果,获取上述对应的元素的两个后续元素的数组下标中的一个下标值,其中,上述步骤B循环执行;
[0032]步骤C,当查找到与上述当前元素大小相等的元素时,确定上述当前元素属于上述
口 O
[0033]例如,当需要查找当前元素是否属于图3所示的集合时,比较上述集合中的nodeO的元素本身与当前元素的大小,如果node O的元素本身大于当前元素的大小,则获取node O的数组下标中的2,之后查找node 2,比较上述集合中的node 2的元素本身与当前元素的大小,如果node 2的元素本身大于当前元素的大小,则获
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1