CN104199966A - 一种桶式链表结构的实现方法 - Google Patents
一种桶式链表结构的实现方法 Download PDFInfo
- Publication number
- CN104199966A CN104199966A CN201410484379.8A CN201410484379A CN104199966A CN 104199966 A CN104199966 A CN 104199966A CN 201410484379 A CN201410484379 A CN 201410484379A CN 104199966 A CN104199966 A CN 104199966A
- Authority
- CN
- China
- Prior art keywords
- node
- barrel type
- linked list
- index
- bucket
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种桶式链表结构的实现方法,其特点是链表以桶式结构为单位组织节点,节点之间使用数字索引指向上一个和下一个节点位置,链表可由多个桶式结构串联组成。在添加节点时,查找桶式结构中空闲位置,若桶满则创建一个新桶并存入数据。删除节点时将对应桶位置设置为空闲即可。相比较传统的链表结构,桶式链表以桶式为单位进行管理,不再以指针的方式进行双向连接,节点的添加和删除操作都非常快捷,在遍历链表节点时,由于节点之间是内存连续的,不仅提高了内存缓存命中率,还显著加快了软件系统的运行效率。
Description
技术领域
本发明涉及一种桶式链表结构的实现方法,具体涉及到链表结构的创建,节点的添加和删除方法。
背景技术
链表是一种通过指针连接各个节点元素的数据结构,链表进行添加节点和删除节点时,只需要修改前一个和后一个节点的指针即可完成添加和删除操作,相比较数组结构省去了大量的元素移动操作。
由于链表的节点是单个单位组织的,当链表进行大量的节点操作时,频繁的节点添加和删除操作导致了性能的急剧下降,严重影响程序的运行效率。
发明内容
本发明为了解决现有链表在添加节点和删除节点时存在的效率低下问题,提供了一种新型的桶式链表结构实现方法,通过引入桶式结构,将桶内节点以数字索引的方式相互连接,加速了节点的添加、删除和访问的速度,提升了程序的运行效率。特别是在高性能大数据运算领域,通过本发明提供的方法效率提升尤其明显。
本发明的具体实现方案如下:
一种桶式链表结构的实现及方法,其特征是通过构造桶式结构组织节点,桶内各个节点使用前向索引和后向索引与其他节点相互连接,所述的桶式结构是由一个固定大小的数组组成,数组中的元素由节点数据、前向索引和后向索引组成,前向索引指向上一个节点的位置,后向索引指向下一个节点的位置。
所述前向索引是一个位置索引,指向了当前节点的上一个节点在桶内的位置,所述后向索引与前身索引相反,指向了当前节点的下一个节点在桶内的位置。
在添加节点时,查找现有桶式结构是否有空闲的位置,若无空闲位置则创建一个新桶,在空闲位置存入数据,并设置节点的前向索引和后向索引,以及前后节点的索引。
在删除节点时,首先调整当前节点的前后节点的位置索引,再将此节点位置设置为空闲状态,并检查当前桶式结构是为全部为空闲,若是则删除此桶式结构。
本发明的有益效果是:通过引入桶式结构,高效的解决了链表在添加和删除节点时的效率低下问题,得益于桶式结构的组织方式,在遍历链表时,缓存命中率得到提高,从而显著加快了链表的运行效率。
附图说明
图1为本发明桶式链表结构示意图。
具体实施方式
本发明的特征和优点将通过以下实例示意图进行阐述,示意图中的展示实例仅是本发明技术方案的典型范例,凡采取等同替换或等效变换而形成的技术方案,均涉及本发明要求的保护范围之内。
图1为本发明中桶式链表结构示意图,在本示意图中链表由三个桶式结构串联组成,各个桶式结构分别有5个节点空间,各个节点由前向索引、节点数据和后向索引组成。桶1中第3个位置(从0开始)由于是空闲,节点3的后向索引指向了第4个位置。第4个节点的后向索引,指向了桶2的第0个节点,此节点在链表中总的位置是5。从桶2中各节点的前向索引和后向索引可知,第2、3、4节点的顺序位置相反。
链表中的头节点和尾节点标示了链表的开始和结束的节点位置。
空闲位置的前向索引和后向索引都标记为-1。
首先,第一次添加节点时,创建一个新的桶式结构,桶内各个节点位置都标记为空闲,将数据存入第一个空闲位置,并设置前向索引和后向索引为-1,将链表的头节点和尾节点指向此位置。当下次添加节点时,查找现有的桶式结构得到空闲位置,若无空闲位置,则创建新的桶式结构。
其次,当删除一个节点时,得到桶式结构的位置,将数据清空,并调整前后节点的索引。然后判断当前桶是否全部位置为空闲,若是则删除此桶式结构。
最后,在遍历链表时,从头节点或者尾节点开始,通过前向索引或者后向索引调整节点位置,进行遍历。
以上所述仅为本发明的具体实例实施方式,只要以基本相同手段实现本发明目的的技术方案都属于本发明的保护范围之内。
Claims (2)
1.一种桶式链表结构的实现方法,其特征是通过构造桶式结构组织节点,桶内各个节点使用前向索引和后向索引与其他节点相互连接,所述的桶式结构是由一个固定大小的数组组成,数组中的元素由节点数据、前向索引和后向索引组成,前向索引指向上一个节点的位置,后向索引指向下一个节点的位置。
2.根据权利要求1所述的桶式链表结构的实现方法,其特征是所述前向索引是一个位置索引,指向了当前节点的上一个节点在桶内的位置,所述后向索引与前身索引相反,指向了当前节点的下一个节点在桶内的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410484379.8A CN104199966A (zh) | 2014-09-22 | 2014-09-22 | 一种桶式链表结构的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410484379.8A CN104199966A (zh) | 2014-09-22 | 2014-09-22 | 一种桶式链表结构的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104199966A true CN104199966A (zh) | 2014-12-10 |
Family
ID=52085259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410484379.8A Pending CN104199966A (zh) | 2014-09-22 | 2014-09-22 | 一种桶式链表结构的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104199966A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992701A (zh) * | 2019-04-11 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种链表实现方法、装置、设备及可读存储介质 |
CN110347804A (zh) * | 2019-07-22 | 2019-10-18 | 同方知网数字出版技术股份有限公司 | 一种线性时间复杂度的敏感信息检测方法 |
CN111181819A (zh) * | 2019-12-25 | 2020-05-19 | 交控科技股份有限公司 | 一种基于链表结构的接收多字节数据帧的串口通讯方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1378143A (zh) * | 2001-03-30 | 2002-11-06 | 深圳市中兴通讯股份有限公司 | 一种实现快速数据传递的方法 |
CN101276334A (zh) * | 2007-03-29 | 2008-10-01 | 上海新跃仪表厂 | 一种快速检索数据的链表实现方法 |
CN102314485A (zh) * | 2011-07-27 | 2012-01-11 | 中国科学院计算机网络信息中心 | 哈希表添加、查找和删除方法及装置 |
-
2014
- 2014-09-22 CN CN201410484379.8A patent/CN104199966A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1378143A (zh) * | 2001-03-30 | 2002-11-06 | 深圳市中兴通讯股份有限公司 | 一种实现快速数据传递的方法 |
CN101276334A (zh) * | 2007-03-29 | 2008-10-01 | 上海新跃仪表厂 | 一种快速检索数据的链表实现方法 |
CN102314485A (zh) * | 2011-07-27 | 2012-01-11 | 中国科学院计算机网络信息中心 | 哈希表添加、查找和删除方法及装置 |
Non-Patent Citations (3)
Title |
---|
VOUZHOUFZ: "Linux内核hlist数据结构分析", 《CSDN博客》 * |
列旭松等: "《PHP核心技术与最佳实践》", 1 January 2013 * |
胡元义等: "《数据结构教程》", 31 August 2012 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992701A (zh) * | 2019-04-11 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种链表实现方法、装置、设备及可读存储介质 |
CN110347804A (zh) * | 2019-07-22 | 2019-10-18 | 同方知网数字出版技术股份有限公司 | 一种线性时间复杂度的敏感信息检测方法 |
CN110347804B (zh) * | 2019-07-22 | 2023-05-12 | 同方知网数字出版技术股份有限公司 | 一种线性时间复杂度的敏感信息检测方法 |
CN111181819A (zh) * | 2019-12-25 | 2020-05-19 | 交控科技股份有限公司 | 一种基于链表结构的接收多字节数据帧的串口通讯方法 |
CN111181819B (zh) * | 2019-12-25 | 2022-03-08 | 交控科技股份有限公司 | 一种基于链表结构的接收多字节数据帧的串口通讯方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10048937B2 (en) | Flash optimized columnar data layout and data access algorithms for big data query engines | |
CN102819536B (zh) | 树型数据处理方法及装置 | |
CN103514250B (zh) | 一种全局重复数据删除的方法和系统及存储装置 | |
CN103368851B (zh) | 基于资源复用的Openflow流表存储优化方法 | |
Ansari et al. | Fixed point theorems on b-metric spaces for weak contractions with auxiliary functions | |
Yang et al. | Huge: An efficient and scalable subgraph enumeration system | |
CN102880555B (zh) | 面向实时系统的内存算法 | |
CN103488704B (zh) | 一种数据存储方法及装置 | |
CN109471905B (zh) | 一种支持时间范围和属性范围复合查询的区块链索引方法 | |
US20140052713A1 (en) | Hardware implementation of the aggregation/group by operation: filter method | |
US9727606B2 (en) | Hardware implementation of the filter/project operations | |
CN103617216B (zh) | 一种通过哈希值表实现数据快速检索的方法和系统 | |
CN102314485A (zh) | 哈希表添加、查找和删除方法及装置 | |
CN104199966A (zh) | 一种桶式链表结构的实现方法 | |
CN102737114B (zh) | 基于MapReduce的大图上距离连接查询方法 | |
CN102890722A (zh) | 应用于时序历史数据库的索引方法 | |
CN102831140A (zh) | 一种fpga中mac地址查找表的实现方法 | |
CN103324763B (zh) | 一种手机端树形数据结构的展现方法 | |
CN104461551A (zh) | 基于数据并行处理的大数据处理系统 | |
CN102169491B (zh) | 一种多数据集中重复记录动态检测方法 | |
CN105740964A (zh) | 一种城市路网数据组织与最短路径快速计算方法 | |
CN105701128B (zh) | 一种查询语句的优化方法和装置 | |
CN110457535A (zh) | 哈希桶查找方法、哈希表存储、哈希表查找方法和装置 | |
CN103761072A (zh) | 一种粗粒度可重构层次化的阵列寄存器文件结构 | |
CN103197287A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141210 |
|
RJ01 | Rejection of invention patent application after publication |