CN101276334B - 一种快速检索数据的链表实现方法 - Google Patents

一种快速检索数据的链表实现方法 Download PDF

Info

Publication number
CN101276334B
CN101276334B CN2007100386793A CN200710038679A CN101276334B CN 101276334 B CN101276334 B CN 101276334B CN 2007100386793 A CN2007100386793 A CN 2007100386793A CN 200710038679 A CN200710038679 A CN 200710038679A CN 101276334 B CN101276334 B CN 101276334B
Authority
CN
China
Prior art keywords
data
node
array
chained list
linked list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2007100386793A
Other languages
English (en)
Other versions
CN101276334A (zh
Inventor
蔡向东
袁仁翔
王文玲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Xin Yue Lian Hui Electronic Technology Co., Ltd.
Original Assignee
Shanghai Xinyue Instrument Factory
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Xinyue Instrument Factory filed Critical Shanghai Xinyue Instrument Factory
Priority to CN2007100386793A priority Critical patent/CN101276334B/zh
Publication of CN101276334A publication Critical patent/CN101276334A/zh
Application granted granted Critical
Publication of CN101276334B publication Critical patent/CN101276334B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种快速检索数据的链表实现方法。所要解决的技术问题是既要保持数组和链表各自的优点,又要克服各自使用的局限性。实现方式是将链表中的每一个节点的数据项都指向一个数组空间,数据项指向的数组中的每个元素都具备一个唯一的索引号;链表可以为单向链表或双向链表;数组可以是动态分配的数组或指定的数组,整个链表中的数据为排序存放。通过数组和链表的结合操作,能够动态的增加该链表的节点个数来实现动态数组。由于每个节点指向一个可以指定大小的数组空间,而不是仅仅一个数据项,因此扩展了双向链表的功能,也能极大地避免内存的频繁分配和浪费。通过对整个数据进行排序后进行存放,可使用二分法快速的定位数据,方便了操作。

Description

一种快速检索数据的链表实现方法
技术领域:
本发明涉及计算机系统,具体涉及一种快速检索数据的链表实现方法。
背景技术:
随着计算机技术的迅猛发展,特别是嵌入式系统的发展,为了加快系统处理速度等原因,越来越多要处理的数据需要大量的保存在系统内存中,这就要求具备一种方便对内存数据进行维护操作的方法,来满足各种不同的数据处理需求。
现有技术中普通的链表结构功能不够全面,其节点的数据项一般指向一个特定的数据。同时由于当链表的节点创建过多则导致系统内存分配操作过多,随着不停的分配释放节点,容易造成大量的内存碎片,导致系统不便于运行,这在系统运行上是需要尽力避免的。同时由于链表节点过多,导致检索数据的速度急剧下降,运行效率较差。因此当数据量较大则使用链表将十分不可取。
同时由于普通数组具有较大的局限性,必须在系统初始化或函数初始化时首先进行分配,不能动态的进行分配和释放,其灵活性很差并且会导致内存开销较大。
而现有技术中的动态分配内存虽然能够解决普通数组的缺点,在使用时动态的分配使用,减少了系统内存的开销,扩展了普通数组的灵活性,但是当这种动态分配的内存比较多时则非常不便于维护。
发明内容:
本发明所要解决的技术问题是提供一种快速检索数据的链表实现方法,通过该方法,将数组和链表进行结合,同时提供各种相关的维护操作,如增加数据、删除数据、修改数据、检索数据等。可以方便的进行内存中数据的各种维护管理。
为解决上述技术问题,本发明是提出以下技术方案实现的:
一种快速检索数据的链表实现方法,其特征在于:将链表中的每一个节点的数据项都指向一个数组空间,在初始化时指定节点的数据项指向数组的类型;在初始化时指定或默认每一个节点的数据项指向的数组的元素个数并设定每个元素的字节数,数据项指向的数组中的每个元素都具备一个唯一的索引号;链表可以为单向链表或双向链表;数组可以是动态分配的数组或指定的数组,整个链表中的数据为排序存放。
更优化的,链表为双向链表,链表中的每一个节点的数据项都指向一个指定的动态分配的一维数组空间,通过指定该节点数据指向的数组元素个数,同时动态的增加该链表的节点个数来实现动态数组链表。
所述动态数组链表新增数据实现方法如下:
首先判断动态链表是否有节点;如果没有节点则分配一个新节点,并分配动态数组的元素个数乘以每个元素的字节数的内存空间来作为新节点的数据区,然后将新增的数据复制到该节点的第一个元素中;如果有节点则判断最后节点的元素是否已经用完,是则重新分配一个新节点和该节点的数据区,然后利用排序查找方法获取要新增的数据应该存放的位置,将新增的数据插入到该位置并将该位置后的数据往后移动一个数据位置;如果最后节点的元素还没有使用完则也利用排序查找方法获取要新增的数据应该存放的位置,然后将新增的数据插入到该位置并将该位置后的数据往后移动一个数据位置;
所述动态数组链表删除数据实现方法如下:如果要删除一个节点中的一个元素则将该元素以后的数据都往前移一个位置,如果该元素是最后节点中唯一一个具有数据的元素则将该节点和数据区删除;
所述动态数组链表修改数据实现方法如下:根据利用排序查找方法获取修改后的数据应该存放的位置,比较新位置和老位置,如果大则将新老位置之间的数据前移一个位置,如果小则将新老位置之间的数据后移一个位置,如果相等则不需要移动;然后将修改后的新值放到新位置中;
所述动态数组链表获取指定位置数据实现方法如下:根据位置索引号,判断该索引号位于哪个节点上的哪个元素,从而直接将对应位置的数据读出;
所述动态数组链表查找数据实现方法如下:根据要查找的数据,利用排序查找方法将对应的节点元素找到;
所述动态数组链表清空节点实现方法如下:一个节点一个节点的将节点和对应的数据区分配的空间释放。
所述排序查找方法可以是二分法。
本发明带来以下有益效果:
由链表和数组共同组成,每个节点指向一个可以指定大小的数组空间,而不是仅仅一个数据项,因此扩展了该双向链表的功能,也能够极大的避免了内存的频繁分配和浪费,避免了象普通链表只指向一个具体的数据项,
避免了象普通链表一样需要大量的分配内存的操作。
动态数组链表的节点是动态分配的,以及节点的数据项指向的动态数组的大小也是可以指定的,因此来实现动态数组链表的动态变化功能。
动态数组链表的数据项指定的动态数组中的每个元素都具备一个索引号,能够方便的操作指定索引号的数据。同时由于整个动态数组链表中的数据可以是排序存放的,因此能够使用二分法快速的检索相关数据。
通过本发明能够实现功能强大的内存数据维护操作。因此能够满足需要动态创建数据,快速查找数据、需要频繁分配内存的各个应用方面的需求。
附图说明:
图1:本发明一实施例的各个部分的结构关系图
具体实施方式:
下面结合附图和具体实施例对本发明做进一步的描述:
图1为一个双向动态数组链表的示例图。
当系统需要在内存中保存大量同类数据的时候,首先必须调用该方法中的动态数值链表初始化功能,来确定该动态数组链表的相关属性值。为创建动态数组链表做准备。
可以增加动态数组链表数据,在链表中新增一个动态数组链表数据。并且在增加的时候判断是否有没有使用的数组元素,有则直接将数据赋值给还没有使用的元素,没有则自动创建一个新节点,并动态分配一个动态数组,然后将新节点的数据项指向该动态数组,并将指定的数据赋值给动态数组的第一个元素。这样就可以避免了大量的内存分配操作,避免了内存碎片。也可以批量增加动态数组链表的数据。如果用户需要保存的数据是排序后的数据,则在新增数据时先搜索要保存指定数据的位置,然后将指定数据赋值给对应的数组元素,并将其它元素移到对应位置。
当需要从动态数组链表中删除数据时,通过调用删除数据功能,将指定索引号的该条数据从动态数组链表中删除。如果最后的节点没有数据则删除该节点。
通过调用修改数据的功能,将指定索引号的该条数组元素的值修改为指定的值,如果数据是排序的则判断该值应该存放的新位置,然后将新老位置中的数据移动到对应位置并将修改后的值赋值给新位置上的元素。当要检索数据是否存在时,如果数据是排序的,则采用二分法进行数据检索,如果数据不是排序的则从动态数组链表中的头节点开始进行数据检索,直到检索到指定数据或检索完动态数组链表。
可以清空动态数组链表,将整个动态数组链表所占用的内存空间进行清空释放。
通过该方法结合现有技术中链表及数组的各种功能,就能够对动态数组链表实现不同的管理操作,从而来实现应用程序的设计目标。可广泛应用在内存中需要进行大量动态增加删除修改查询数据的技术领域中。

Claims (3)

1.一种快速检索数据的链表实现方法,其特征在于:将链表中的每一个节点的数据项都指向一个数组空间,在初始化时指定节点的数据项指向数组的类型;在初始化时指定或默认每一个节点的数据项指向的数组的元素个数并设定每个元素的字节数,数据项指向的数组中的每个元素都具备一个唯一的索引号;链表为双向链表;数组是动态分配的数组,整个链表中的数据为排序存放;
所述链表中的每一个节点的数据项都指向一个指定的动态分配的一维数组空间,通过指定该节点数据指向的数组元素个数,同时动态的增加该链表的节点个数来实现动态数组链表;
所述动态数组链表新增数据实现方法如下:
首先判断动态链表是否有节点;如果没有节点则分配一个新节点,并分配动态数组的元素个数乘以每个元素的字节数的内存空间来作为新节点的数据区,然后将新增的数据复制到该节点的第一个元素中;如果有节点则判断最后节点的元素是否已经用完,是则重新分配一个新节点和该节点的数据区,然后利用排序查找方法获取要新增的数据应该存放的位置,将新增的数据插入到该位置并将该位置后的数据往后移动一个数据位置;如果最后节点的元素还没有使用完则也利用排序查找方法获取要新增的数据应该存放的位置,然后将新增的数据插入到该位置并将该位置后的数据往后移动一个数据位置。
2.按照权利要求1所述的一种快速检索数据的链表实现方法,其特征在于:
所述动态数组链表删除数据实现方法如下:如果要删除一个节点中的一个元素则将该元素以后的数据都往前移一个位置,如果该元素是最后节点中唯一一个具有数据的元素则将该节点和数据区删除;
所述动态数组链表修改数据实现方法如下:根据利用排序查找方法获取修改后的数据应该存放的位置,比较新位置和老位置,如果大则将新老位置之间的数据前移一个位置,如果小则将新老位置之间的数据后移一个位置,如果相等则不需要移动;然后将修改后的新值放到新位置中;
所述动态数组链表获取指定位置数据实现方法如下:根据位置索引号,判断该索引号位于哪个节点上的哪个元素,从而直接将对应位置的数据读出;
所述动态数组链表查找数据实现方法如下:根据要查找的数据,利用排序查找方法将对应的节点元素找到;
所述动态数组链表清空节点实现方法如下:一个节点一个节点的将节点和对应的数据区分配的空间释放。
3.按照权利要求2所述的一种快速检索数据的链表实现方法,其特征在于:所述排序查找方法是二分法。
CN2007100386793A 2007-03-29 2007-03-29 一种快速检索数据的链表实现方法 Active CN101276334B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007100386793A CN101276334B (zh) 2007-03-29 2007-03-29 一种快速检索数据的链表实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007100386793A CN101276334B (zh) 2007-03-29 2007-03-29 一种快速检索数据的链表实现方法

Publications (2)

Publication Number Publication Date
CN101276334A CN101276334A (zh) 2008-10-01
CN101276334B true CN101276334B (zh) 2011-04-06

Family

ID=39995789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100386793A Active CN101276334B (zh) 2007-03-29 2007-03-29 一种快速检索数据的链表实现方法

Country Status (1)

Country Link
CN (1) CN101276334B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106597049A (zh) * 2016-12-15 2017-04-26 电子科技大学 基于链表数组的多幅波形包络提取方法

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499034A (zh) * 2009-03-05 2009-08-05 北京中星微电子有限公司 内存管理方法
CN101635682B (zh) * 2009-08-05 2011-12-07 中兴通讯股份有限公司 一种存储管理的方法和系统
CN102117278B (zh) * 2009-12-31 2016-10-05 联想(北京)有限公司 链表的创建方法及系统、数据的查找方法及系统
CN102014282B (zh) * 2010-10-25 2013-07-03 深圳市融创天下科技股份有限公司 一种分布式视频转码调度方法及系统
CN103164490B (zh) * 2011-12-19 2016-02-17 北京新媒传信科技有限公司 一种不固定长度数据的高效存储实现方法和装置
CN102662996A (zh) * 2012-03-15 2012-09-12 北京播思软件技术有限公司 一种数据快速分类的方法
CN102685590B (zh) * 2012-05-14 2014-12-10 深圳市九洲电器有限公司 机顶盒内存管理方法及装置
CN103677747A (zh) * 2012-09-25 2014-03-26 上海航天测控通信研究所 显控软件处理航迹信息的方法
CN103064881B (zh) * 2012-12-03 2016-01-13 深圳市汇川控制技术有限公司 动态内存分配中的环形数据管理器及环形数据管理方法
CN103870259A (zh) * 2012-12-14 2014-06-18 腾讯科技(深圳)有限公司 数据处理方法及装置
CN105224532B (zh) * 2014-05-28 2019-11-08 腾讯科技(深圳)有限公司 数据处理方法及装置
CN104199966A (zh) * 2014-09-22 2014-12-10 杭州电魂网络科技股份有限公司 一种桶式链表结构的实现方法
CN104239564B (zh) * 2014-09-28 2018-02-09 深圳市锐明技术股份有限公司 一种文件索引组织及修复的方法及装置
CN104363175A (zh) * 2014-11-21 2015-02-18 迈普通信技术股份有限公司 一种资源表构建方法和装置
CN107292107A (zh) * 2014-12-02 2017-10-24 厦门飞游信息科技有限公司 一种地图寻路方法、设备及计算终端
CN106201910A (zh) * 2016-08-27 2016-12-07 浪潮(北京)电子信息产业有限公司 一种小块内存的管理方法和装置
CN107918612B (zh) * 2016-10-08 2019-03-05 腾讯科技(深圳)有限公司 键值存储系统数据结构的实现方法和装置
CN107885347B (zh) * 2017-10-27 2022-05-03 深圳前海茂佳软件科技有限公司 遥控驱动方法、装置及计算机可读存储介质
CN109101643A (zh) * 2018-08-21 2018-12-28 智久(厦门)机器人科技有限公司上海分公司 数据信息表的构建、抗伪点全局匹配方法、装置及机器人
CN109271383B (zh) * 2018-09-05 2021-01-08 广州视源电子科技股份有限公司 动态标签处理方法、装置、计算机设备和存储介质
CN109992701B (zh) * 2019-04-11 2020-05-15 苏州浪潮智能科技有限公司 一种链表实现方法、装置、设备及可读存储介质
CN111597392B (zh) * 2020-04-10 2023-04-18 北京百卓网络技术有限公司 一种索引处理方法、装置、设备及存储介质
CN111898002B (zh) * 2020-08-07 2024-03-29 人教数字出版有限公司 一种单向链表的生成方法、读取方法及装置
US11494119B2 (en) 2020-09-10 2022-11-08 Micron Technology, Inc. Memory searching component
CN111984691B (zh) * 2020-09-11 2023-01-06 苏州浪潮智能科技有限公司 一种分布式存储系统中对象元数据检索列举方法及装置
CN112118262B (zh) * 2020-09-21 2022-07-29 武汉中元华电科技股份有限公司 一种基于动态内存分配实现数据排序与合并的系统及方法
CN114884910B (zh) * 2022-06-08 2023-06-16 芯河半导体科技(无锡)有限公司 一种超大内存数据的动态管理的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549207A (zh) * 2003-05-21 2004-11-24 明基电通股份有限公司 封闭区域的填充方法
CN1571502A (zh) * 2004-05-09 2005-01-26 上海高清数字技术创新中心 一种检索业务信息数据的方法
CN1612100A (zh) * 2003-10-27 2005-05-04 陈启星 分级定位排序和分级定位查找的动态查找表的算法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549207A (zh) * 2003-05-21 2004-11-24 明基电通股份有限公司 封闭区域的填充方法
CN1612100A (zh) * 2003-10-27 2005-05-04 陈启星 分级定位排序和分级定位查找的动态查找表的算法
CN1571502A (zh) * 2004-05-09 2005-01-26 上海高清数字技术创新中心 一种检索业务信息数据的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106597049A (zh) * 2016-12-15 2017-04-26 电子科技大学 基于链表数组的多幅波形包络提取方法
CN106597049B (zh) * 2016-12-15 2019-01-25 电子科技大学 基于链表数组的多幅波形包络提取方法

Also Published As

Publication number Publication date
CN101276334A (zh) 2008-10-01

Similar Documents

Publication Publication Date Title
CN101276334B (zh) 一种快速检索数据的链表实现方法
CN102541529B (zh) 一种查询页面生成装置和方法
CN101315628B (zh) 内存数据库系统及实现内存数据库的方法和装置
CN101354726B (zh) 一种机群文件系统的内存元数据管理方法
CN100468402C (zh) 一种数据存储及查询方法
CN104021161B (zh) 一种聚簇存储方法及装置
US5926807A (en) Method and system for effectively representing query results in a limited amount of memory
US8046557B2 (en) Apparatus and method for on-demand in-memory database management platform
CN106294190B (zh) 一种存储空间管理方法及装置
CN108804510A (zh) 键值文件系统
US9047301B2 (en) Method for optimizing the memory usage and performance of data deduplication storage systems
JP4503647B2 (ja) メモリ割り当てのためのフックした複製値を有するバイナリサーチツリー
CN110268394A (zh) Kvs树
CN110291518A (zh) 合并树无用单元指标
CN110383261A (zh) 用于多流存储装置的流选择
CN102169507A (zh) 一种分布式实时搜索引擎
CN105683898A (zh) 对储存系统中数据高效存储与检索的组相关哈希表组织
JP2769100B2 (ja) 継承を有するデータ・モデル用の並列テーブル
CN102915382A (zh) 一种基于索引的数据库的数据查询方法和装置
KR102440128B1 (ko) 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법
CN101986649B (zh) 应用于电信行业计费系统的共享数据中心
CN100424699C (zh) 一种属性可扩展的对象文件系统
CN104102695B (zh) 智能设备启动过程的数据处理方法及智能设备
CN102033882A (zh) 一种性能数据的存储方法及系统
CN104166661A (zh) 数据存储系统和数据存储方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SHANGHAI XINYUE LIANHUI ELECTRONIC TECHNOLOGY CO.,

Free format text: FORMER OWNER: SHANGHAI XINYUE INSTRUMENT FACTORY

Effective date: 20120703

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Wang Wenling

Inventor after: Yin Youjun

Inventor after: Cai Xiangdong

Inventor after: Wang Yuhong

Inventor after: Yuan Guanghui

Inventor after: Yuan Renxiang

Inventor before: Cai Xiangdong

Inventor before: Yuan Renxiang

Inventor before: Wang Wenling

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: CAI XIANGDONG YUAN RENXIANG WANG WENLING TO: WANG WENLING YIN YOUJUN CAI XIANGDONG WANG YUHONG YUAN GUANGHUI YUAN RENXIANG

TR01 Transfer of patent right

Effective date of registration: 20120703

Address after: 200233 Xuhui District, Yishan Road, No. 710,

Patentee after: Shanghai Xin Yue Lian Hui Electronic Technology Co., Ltd.

Address before: 200233 No. 710, Shanghai, Yishan Road

Patentee before: Shanghai Xinyue Instrument Factory

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160324

Address after: 226100 Silk Road, Haimen Development Zone, Nantong, Jiangsu 586, China

Patentee after: HAIMEN CHUNHUA ELECTRONIC TECHNOLOGY CO., LTD.

Address before: 200233 Xuhui District, Yishan Road, No. 710,

Patentee before: Shanghai Xin Yue Lian Hui Electronic Technology Co., Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20181108

Address after: 200233 89 Yishan Road, Xuhui District, Shanghai, 710

Patentee after: Shanghai Xin Yue Lian Hui Electronic Technology Co., Ltd.

Address before: 226100 586 Silk Road, Haimen Development Zone, Nantong, Jiangsu

Patentee before: HAIMEN CHUNHUA ELECTRONIC TECHNOLOGY CO., LTD.