[发明专利]一种快速检索数据的链表实现方法有效
申请号: | 200710038679.3 | 申请日: | 2007-03-29 |
公开(公告)号: | CN101276334A | 公开(公告)日: | 2008-10-01 |
发明(设计)人: | 蔡向东;袁仁翔;王文玲 | 申请(专利权)人: | 上海新跃仪表厂 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海航天局专利中心 | 代理人: | 张绪成 |
地址: | 20023*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 检索 数据 实现 方法 | ||
技术领域:
本发明涉及计算机系统,具体涉及一种快速检索数据的链表实现方法。
背景技术:
随着计算机技术的迅猛发展,特别是嵌入式系统的发展,为了加快系统处理速度等原因,越来越多要处理的数据需要大量的保存在系统内存中,这就要求具备一种方便对内存数据进行维护操作的方法,来满足各种不同的数据处理需求。
现有技术中普通的链表结构功能不够全面,其节点的数据项一般指向一个特定的数据。同时由于当链表的节点创建过多则导致系统内存分配操作过多,随着不停的分配释放节点,容易造成大量的内存碎片,导致系统不便于运行,这在系统运行上是需要尽力避免的。同时由于链表节点过多,导致检索数据的速度急剧下降,运行效率较差。因此当数据量较大则使用链表将十分不可取。
同时由于普通数组具有较大的局限性,必须在系统初始化或函数初始化时首先进行分配,不能动态的进行分配和释放,其灵活性很差并且会导致内存开销较大。
而现有技术中的动态分配内存虽然能够解决普通数组的缺点,在使用时动态的分配使用,减少了系统内存的开销,扩展了普通数组的灵活性,但是当这种动态分配的内存比较多时则非常不便于维护。
发明内容:
本发明所要解决的技术问题是提供一种快速检索数据的链表实现方法,通过该方法,将数组和链表进行结合,同时提供各种相关的维护操作,如增加数据、删除数据、修改数据、检索数据等。可以方便的进行内存中数据的各种维护管理。
为解决上述技术问题,本发明是提出以下技术方案实现的:
一种快速检索数据的链表实现方法,其特征在于:将链表中的每一个节点的数据项都指向一个数组空间,在初始化时指定节点的数据项指向数组的类型;在初始化时指定或默认每一个节点的数据项指向的数组的元素个数并设定每个元素的字节数,数据项指向的数组中的每个元素都具备一个唯一的索引号;链表可以为单向链表或双向链表;数组可以是动态分配的数组或指定的数组,整个链表中的数据为排序存放。
更优化的,链表为双向链表,链表中的每一个节点的数据项都指向一个指定的动态分配的一维数组空间,通过指定该节点数据指向的数组元素个数,同时动态的增加该链表的节点个数来实现动态数组链表。
所述动态数组链表新增数据实现方法如下:
首先判断动态链表是否有节点;如果没有节点则分配一个新节点,并分配动态数组的元素个数乘以每个元素的字节数的内存空间来作为新节点的数据区,然后将新增的数据复制到该节点的第一个元素中;如果有节点则判断最后节点的元素是否已经用完,是则重新分配一个新节点和该节点的数据区,然后利用排序查找方法获取要新增的数据应该存放的位置,将新增的数据插入到该位置并将该位置后的数据往后移动一个数据位置;如果最后节点的元素还没有使用完则也利用排序查找方法获取要新增的数据应该存放的位置,然后将新增的数据插入到该位置并将该位置后的数据往后移动一个数据位置;
所述动态数组链表删除数据实现方法如下:如果要删除一个节点中的一个元素则将该元素以后的数据都往前移一个位置,如果该元素是最后节点中唯一一个具有数据的元素则将该节点和数据区删除;
所述动态数组链表修改数据实现方法如下:根据利用排序查找方法获取修改后的数据应该存放的位置,比较新位置和老位置,如果大则将新老位置之间的数据前移一个位置,如果小则将新老位置之间的数据后移一个位置,如果相等则不需要移动;然后将修改后的新值放到新位置中;
所述动态数组链表获取指定位置数据实现方法如下:根据位置索引号,判断该索引号位于哪个节点上的哪个元素,从而直接将对应位置的数据读出;
所述动态数组链表查找数据实现方法如下:根据要查找的数据,利用排序查找方法将对应的节点元素找到;
所述动态数组链表清空节点实现方法如下:一个节点一个节点的将节点和对应的数据区分配的空间释放。
所述排序查找方法可以是二分法。
本发明带来以下有益效果:
由链表和数组共同组成,每个节点指向一个可以指定大小的数组空间,而不是仅仅一个数据项,因此扩展了该双向链表的功能,也能够极大的避免了内存的频繁分配和浪费,避免了象普通链表只指向一个具体的数据项,避免了象普通链表一样需要大量的分配内存的操作。
动态数组链表的节点是动态分配的,以及节点的数据项指向的动态数组的大小也是可以指定的,因此来实现动态数组链表的动态变化功能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海新跃仪表厂,未经上海新跃仪表厂许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710038679.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种简易碎肉机
- 下一篇:上吸式生物质气化机专用压块
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置