CN111124355B - 信息处理方法、装置、可读存储介质及电子设备 - Google Patents
信息处理方法、装置、可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN111124355B CN111124355B CN201911276704.0A CN201911276704A CN111124355B CN 111124355 B CN111124355 B CN 111124355B CN 201911276704 A CN201911276704 A CN 201911276704A CN 111124355 B CN111124355 B CN 111124355B
- Authority
- CN
- China
- Prior art keywords
- linked list
- address
- target
- doubly
- priority
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种信息处理方法、装置、可读存储介质及电子设备。该方法包括:根据各双向链表的优先级和双向链表的当前末尾元素,确定本次要移出的目标元素,其中,每一双向链表分别具有不同的优先级,双向链表中存储有具有对应优先级的元素;将目标元素从所属双向链表中移出,以对目标元素进行处理。如此,由于每一双向链表分别具有不同的优先级,并根据各双向链表的优先级和该双向链表的当前末尾元素,确定本次要移出的目标元素,所以,在移出元素之后无需对双向链表进行调整,因此,相较于相关技术中通过二叉堆实现优先队列功能,采用本公开提供的方法,可以极大地提升元素移出的效率,进而提升信息处理的效率。
Description
技术领域
本公开涉及计算机应用领域,具体地,涉及一种信息处理方法、装置、可读存储介质及电子设备。
背景技术
在支持优先级的信息处理过程中,信息处理模块进行处理的信息是按照优先级的顺序排列,而不是按照信息处理的先后排列。也就是说,优先级高的信息,即使比优先级低的信息后请求处理,也应该比优先级低的信息先得到处理。因此,在队列传输过程中,优先级高的信息需要比优先级低的信息更早出队,即,信息的出队顺序与入队顺序不同,优先级高的信息先出队,优先级低的信息后出队。
相关技术中,通常是基于二叉堆实现,优先级高的信息先出队,以及优先级低的信息后出队的目的。其中,二叉堆可以容纳无限种优先级。但是,在利用二叉堆对信息进行入队和出队操作时时间复杂度较高。具体地,在二叉堆中执行出队操作时需要对二叉堆进行多次调整,以使最终调整后的二叉堆满足结构性和堆序性,进而使得出队或入队的时间复杂度为O(logN),导致信息的传输效率较低,进而影响处理效率。其中,N为二叉堆中的结点数量。
发明内容
本公开的目的是提供一种信息处理方法、装置、可读存储介质及电子设备,以提升信息处理效率。
为了实现上述目的,本公开第一方面提供一种信息处理方法,包括:
根据各双向链表的优先级和所述双向链表的当前末尾元素,确定本次要移出的目标元素,其中,每一所述双向链表分别具有不同的优先级,所述双向链表中存储有具有对应优先级的元素;
将所述目标元素从所属双向链表中移出,以对所述目标元素进行处理。
可选地,所述方法还包括:
确定与待入队元素的优先级对应的目标双向链表;
将所述待入队元素插入至所述目标双向链表。
可选地,所述将所述待入队元素插入至所述目标双向链表,包括:
将所述待入队元素插入至所述目标双向链表的头指针的后一位。
可选地,所述根据各双向链表的优先级和所述双向链表的当前末尾元素,确定本次要移出的目标元素,包括:
将当前优先级最高的非空双向链表中的当前末尾元素确定为所述目标元素。
可选地,若一双向链表的当前末尾元素的前驱元素的地址不为该双向链表的头指针地址,则移出该当前末尾元素之后的该双向链表为非空双向链表;若一双向链表的当前末尾元素的前驱元素的地址为该双向链表的头指针地址,则移出该当前末尾元素之后的该双向链表为空双向链表。
可选地,将头指针地址与栈顶指针的当前地址一致的双向链表确定为当前优先级最高的非空双向链表;
在将所述目标元素从所属双向链表中移出之后,所述方法还包括:
若所述目标元素所属双向链表当前为空双向链表,则将所述栈顶指针的当前地址更新为当前优先级最高的非空双向链表的头指针地址。
可选地,每一所述双向链表的标识、头指针地址和末尾元素地址被关联存储在索引表中;
在将所述目标元素从所属双向链表中移出之后,所述方法还包括:
根据所述目标元素所属双向链表的当前末尾元素的地址更新所述索引表。
本公开第二方面还提供一种信息处理装置,所述装置包括:
第一确定模块,用于根据各双向链表的优先级和所述双向链表的当前末尾元素,确定本次要移出的目标元素,其中,每一所述双向链表分别具有不同的优先级,所述双向链表中存储有具有对应优先级的元素;
移出模块,用于将所述目标元素从所属双向链表中移出,以对所述目标元素进行处理。
可选地,所述装置还包括:
第一确定模块,用于确定与待入队元素的优先级对应的目标双向链表;
插入模块,用于将所述待入队元素插入至所述目标双向链表。
可选地,所述插入模块,用于将所述待入队元素插入至所述目标双向链表的头指针的后一位。
可选地,所述第一确定模块,用于将当前优先级最高的非空双向链表中的当前末尾元素确定为所述目标元素。
可选地,若一双向链表的当前末尾元素的前驱元素的地址不为该双向链表的头指针地址,则移出该当前末尾元素之后的该双向链表为非空双向链表;若一双向链表的当前末尾元素的前驱元素的地址为该双向链表的头指针地址,则移出该当前末尾元素之后的该双向链表为空双向链表。
可选地,将头指针地址与栈顶指针的当前地址一致的双向链表确定为当前优先级最高的非空双向链表;所述装置还包括:
第一更新模块,用于若所述目标元素所属双向链表当前为空双向链表,则将所述栈顶指针的当前地址更新为当前优先级最高的非空双向链表的头指针地址。
可选地,每一所述双向链表的标识、头指针地址和末尾元素地址被关联存储在索引表中;所述装置还包括:
第二更新模块,用于根据所述目标元素所属双向链表的当前末尾元素的地址更新所述索引表。
本公开第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开第一方面所提供的所述方法的步骤。
本公开第四方面提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所提供的所述方法的步骤。
采用上述技术方案,根据各双向链表的优先级和双向链表的当前末尾元素,确定本次要移出的目标元素,之后,将该目标元素从其所属的双向链表中移出。如此,由于每一双向链表分别具有不同的优先级,并根据各双向链表和该双向链表的当前末尾元素,确定本次要移出的目标元素,所以,在移出元素之后无需对双向链表进行调整,因此,相较于相关技术中通过二叉堆实现优先队列功能,采用本公开提供的方法,可以极大地提升元素移出的效率,进而提升信息处理的效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1a~1e是根据一示例性实施例示出的一种基于二叉堆的元素出队示意图。
图2a和2b是根据一示例性实施例示出的一种信息处理方法的实施场景示意图。
图3是根据一示例性实施例示出的一种信息处理方法的流程图。
图4是根据一示例性实施例示出的一种在初始化过程配置的双向链表的示意图。
图5是根据一示例性实施例示出的一种信息处理方法中插入元素的方法的流程图。
图6a和6b是根据一示例性实施例示出的一种在双向链表中插入元素的示意图。
图7是根据另一示例性实施例示出的一种双向链表的示意图。
图8是根据另一示例性实施例示出的一种双向链表的示意图。
图9是根据另一示例性实施例示出的一种双向链表的示意图。
图10是根据一示例性实施例示出的一种信息处理装置的框图。
图11是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1a~1e是根据一示例性实施例示出的一种基于二叉堆的元素出队示意图。图1a所示的二叉堆中包括元素K0、元素K1、元素K2、元素K3、元素K4和元素K5,其中,该六个元素的优先级关系为K0=K1>K2=K3>K4>K5。
示例地,假设本次要移出的元素为图1a中位于堆顶的元素K0。在将元素K0移出二叉堆之后,堆顶的位置就空闲下来了,此时二叉堆如图1b所示。为了保持二叉堆的结构特性不变,需要对其进行调整。调整的具体过程为:在堆顶空闲后,为了保持二叉堆结构特性不变,首先将二叉堆中最后一个元素(元素K5)填补到堆顶,形成如图1c所示的二叉堆。在图1c中虽然满足了二叉堆的结构特性,但由于在元素K5、元素K1和元素K2中,元素K1的优先级最高,所以二叉堆的堆序特性被破坏,因此,需要将元素K1和元素K5互换位置,形成如图1d所示的二叉堆。在图1d中,由于在元素K5、元素K3和元素K4中,元素K3的优先级最高,所以,需要将元素K3和元素K5互换位置,形成如图1e所示的二叉堆,此时图1e中的二叉堆不仅满足二叉堆的结构特性,同时该二叉堆中的所有节点均满足了堆序的特性。至此,完成了一次元素出队操作。
由此可见,在将二叉堆中的元素移出时时间复杂度为O(logN)(例如,在上述例子中,N=6,需要对二叉堆进行3次调整才可以得到满足结构特性和堆序特性的二叉堆)。
鉴于此,为了减小元素移出时的时间复杂度,提高信息传输效率,本公开提供一种信息处理方法、装置、可读存储介质及电子设备。
首先对本公开可能的实施场景进行说明。如图2a和2b所示,该实施场景可以包括客户端1至客户端10、消息中间件和服务器。其中,如图2a所示,消息中间件包括三个双向链表分别为双向链表P0、双向链表P1和双向链表P2。其中,双向链表P0的优先级为P0、双向链表P1的优先级为P1,以及双向链表P2的优先级为P2,并且客户端1向消息中间件发送的请求1的优先级为P2,客户端2向消息中间件发送的请求2的优先级为P1,……,客户端10向消息中间件发送的请求10的优先级为P1。这样,消息中间件在接收到客户端1至客户端10发送的请求后,根据其优先级将其插入至与其优先级对应的双向链表中。例如,将请求3和请求5依次插入至双向链表P0中,将请求2、请求4、请求8、请求9、请求10依次插入至双向链表P1中,将请求1、请求6、请求7依次插入至双向链表P2中。之后,如图2b所示,消息中间件将上述十个请求依次从双向链表中取出,并按照图2b中的顺序依次发送至服务器,以使服务器对客户端发送的请求进行处理。
需要说明的是,可以并行向双向链表P0、双向链表P1和双向链表P2中插入相应的请求。
图3是根据一示例性实施例示出的一种信息处理方法的流程图,执行该信息处理方法的主体可以是电子设备,也可以是消息中间件(例如,Redis或数据库)。如图3所示,该信息处理方法可以包括步骤301和步骤302。
在步骤301中,根据各双向链表的优先级和双向链表的当前末尾元素,确定本次要移出的目标元素。其中,每一双向链表分别具有不同的优先级,双向链表中存储有具有对应优先级的元素。
考虑到双向链表中每个数据结点中都有两个指针,分别指向后继元素和前驱元素,为了便于后续可以根据末尾元素查找其前驱元素,以及向头指针的后一位插入元素,因此,在本公开中,采用双向链表来存储元素。其中,其存的元素可以是具体数值,也可以是客户端发送的请求(如图2a和2b所示),等等,本公开对此不作具体限定。
此外,考虑到在实际应用中不同的请求或者数值据具有不同的优先级,所以,在本公开中,每一双向链表分别具有不同的优先级,每一双向链表中存储具有对应优先级的元素。示例地,假设双向链表P0的优先级为P0,在该双向链表P0中只能存储优先级为P0的元素。
在本公开中,在将存储在双向链表中的元素移出时,可以根据各双向链表的优先级和双向链表的当前末尾元素,确定本次要移出的目标元素。在一种实施例中,在每次移出元素时,均将优先级最高的双向链表中的当前末尾元素确定为本次要移出的目标元素。
示例地,若双向链表的数量为四,且四个双向链表的优先级为:双向链表P0>双向链表P1>双向链表P2>双向链表P3。在本次移出元素时,可以将双向链表P0中的当前末尾元素确定为本次要移出的目标元素。
在步骤202中,将目标元素从所属双向链表中移出,以对目标元素进行处理。
在确定出本次要移出的目标元素之后,可以将该目标元素从其所属的双向链表中移出,以对该目标元素进行处理。需要说明的是,可以在每移出一个目标元素之后对其进行处理,还可以在将各双向链表中的所有元素均移出后,按照移出的先后顺序对其进行处理,本公开对此不作具体限定。
此外,对目标元素进行处理可以是执行该信息处理方法的电子设备对目标元素进行处理(例如,对数据进行分析、对请求进行响应等等),还可以是执行该信息处理方法的电子设备将目标元素发送至服务器,以使服务器对该目标元素进行处理(如图2b所示),本公开对此不作具体限定。
采用上述技术方案,根据各双向链表的优先级和双向链表的当前末尾元素,确定本次要移出的目标元素,之后,将该目标元素从其所属的双向链表中移出。如此,由于每一双向链表分别具有不同的优先级,并根据各双向链表和该双向链表的当前末尾元素,确定本次要移出的目标元素,所以,在移出元素之后无需对双向链表进行调整,因此,相较于相关技术中通过二叉堆技术实现优先队列功能,采用本公开提供的方法,可以极大地提升元素移出的效率,进而提升信息处理的效率。
为了使本领域技术人员更好的理解本公开提供的信息处理方法,下面以一个完整的实施例对该方法进行说明。
本公开提供的信息处理方法可以包括初始化过程、插入元素过程和移出元素过程。首先,对本公开提供的信息处理方法的初始化过程进行说明。
在初始化过程中,首先,根据用户设定的优先级等级,为每一优先级等级配置一双向链表,其中,每一双向链表存储具有对应优先级的元素。其中,用户可以根据业务需求设定优先级,例如,用户根据业务需求设定四种优先级等级。针对每一优先级等级均配置一双向链表,则需要配置四个双向链表,分别为双向链表P0、双向链表P1、双向链表P2和双向链表P3,并且,该四个双向链表的优先级为:双向链表P0>双向链表P1>双向链表P2>双向链表P3。另外,在配置双向链表的过程中,还可以为每一双向链表构造该双向链表的头指针以及头指针地址。
示例地,在初始化过程中配置的双向链表如图4所示,在图4中,P00、P10、P20、P30分别表征双向链表P0、双向链表P1、双向链表P2、双向链表P3的头指针。
此外,为了便于从双向链表中快速查找到头指针以及末尾元素,在一种优选的实施方式中,还可以建立一索引表,该索引表中关联有每一双向链表的标识、头指针地址和末尾元素地址。示例地,表1是根据图4中的四个双向链表建立的索引表。
表1
双向链表的标识 | P0 | P1 | P2 | P3 |
头指针地址 | 0x0000 | 0x0001 | 0x0002 | 0x0003 |
末尾元素地址 | NULL | NULL | NULL | NULL |
其中,在表1中,双向链表P0的头指针地址为0x0000,双向链表P1的头指针地址为0x0001,双向链表P2的头指针地址为0x0002,双向链表P3的头指针地址为0x0003。由于在初始过程中每一双向链表中均未存储元素,因此,在表1中每一双向链表的末尾元素地址均为空,在表1中用NULL表示。需要说明的是,各双向链表的头指针地址还可以是其他的数值,表1仅示出了一种可能的实施例。
接着,对本公开提供的信息处理方法的插入元素过程进行说明。
如图5所示,插入元素过程可以包括步骤501至步骤502。
在步骤501中,确定与待入队元素的优先级对应的目标双向链表。
在获取到待入队元素时,可以基于该待入队元素的优先级确定其对应的双向链表。示例地,继续沿用上述例子,若待入队元素的优先级为P1,则确定的目标双向链表为双向链表P1。
在步骤502中,将待入队元素插入至目标双向链表。
确定出目标双向链表之后,将该待入队元素插入至目标双向链表。示例地,将待入队元素插入至双向链表P1中。
如上所述,索引表中关联有每一双向链表的末尾元素地址,在双向链表的末尾元素发生变化时,其末尾元素地址也会相应发生变化,因此,在本公开中为了避免索引表中的末尾元素地址频繁变化,一种优选的实施方式为:将待入队元素插入至目标双向链表的头指针的后一位。
具体地,首先找到目标双向链表的头指针,之后,将待入队元素插入至该头指针的后一位。示例地,可以根据索引表中的目标双向链表的头指针地址,直接定位到该目标双向链表的头指针,之后,将该待入队元素插入至头指针的后一位。如此,可以根据索引表中的头指针地址快速定位到目标双向链表的头指针,有效地提高了定位头指针的效率,进而减小了元素入队的时间复杂度。并且,在目标双向链表已存在元素的情况下,在头指针的后一位插入待入队元素时,无需改变索引表中末尾元素地址,进一步减小了元素入队的时间复杂度。
示例地,在图6a中双向链表P0存储的元素为元素P01、元素P02,双向链表P1存储的元素为元素P11、元素P12,双向链表P2存储的元素为元素P21、元素P22,双向链表P3存储的元素为元素P31、元素P32。并且,元素P01元素P11、元素P21和元素P31的地址分别为0xa001、0xb001、0xc001和0xd001,此时,索引表如表2所示。假设目标双向链表为双向链表P1,待入队元素为元素P13,且该元素P13的地址为0xb003,插入该元素P13之后,双向链表如图6b所示。由图6b可知,由于是在双向链表P1的头指针P10之后插入该元素P13的,因此,表2示出的索引表中该双向链表P1的末尾元素地址不变,仍为元素P11的地址0xb001。
表2
双向链表的标识 | P0 | P1 | P2 | P3 |
头指针地址 | 0x0000 | 0x0001 | 0x0002 | 0x0003 |
末尾元素地址 | 0xa001 | 0xb001 | 0xc001 | 0xd001 |
需要说明的是,在插入该待入队元素之前,若索引表中目标双向链表的末尾元素地址为NULL,则在插入该待入队元素之后,还需将索引表中目标双向链表的末尾元素地址由NULL更新为该待入队元素的地址。示例地,假设目标双向链表为图4中的双向链表P1,待入队元素的地址为0xb001,在插入该待入队元素之前,目标双向链表的末尾元素地址为NULL(如表1所示),则在插入该待入队元素之后,需将目标双向链表的末尾元素地址由NULL更新为该待入队元素的地址0xb001,即,更新后的索引表如表3所示。
表3
双向链表的标识 | P0 | P1 | P2 | P3 |
头指针地址 | 0x0000 | 0x0001 | 0x0002 | 0x0003 |
末尾元素地址 | NULL | 0xb001 | NULL | NULL |
按照上述方式,可以将每一待入队元素插入至与其优先级对应的目标双向链表。示例地,如图7所示,假设设定N种优先级等级,相应地配置N个双向链表。在图7中P00表征双向链表P0的头指针,P10表征双向链表P1的头指针,……,PN0表征双向链表PN的头指针。元素P01、元素P02……元素P0k存储在双向链表P0中,元素P11、元素P12……元素P1k存储在双向链表P1中,……,元素PN1、元素PN2……元素PNk存储在双向链表PN中。
最后,对本公开提供的信息处理方法的移出元素过程进行说明。
在实际应用中,若双向链表内未存储元素,则为了减少工作量,无需对其执行移出元素的操作,因此,上述步骤201中根据各双向链表的优先级和双向链表的当前末尾元素,确定本次要移出的目标元素的具体实施方式可以为:将当前优先级最高的非空双向链表中的当前末尾元素确定为目标元素。
其中,确定双向链表是否为非空双向链表的方式可以包括但不限于以下两种方式。在第一种方式中:根据双向链表的当前末尾元素的前驱元素的地址是否为该双向链表的头指针地址,确定移出该当前末尾元素之后的该双向链表是否为非空双向链表。具体地,若一双向链表的当前末尾元素的前驱元素的地址不为该双向链表的头指针地址,表明在当前末尾元素和头指针之间的位置还存在其他元素,则移出该当前末尾元素之后的该双向链表为非空双向链表;若一双向链表的当前末尾元素的前驱元素的地址为该双向链表的头指针地址,则表明在当前末尾元素和头指针之间的位置不存在其他元素,则移出该当前末尾元素之后的该双向链表为空双向链表。
在第二种方式中:配置有如上所述的索引表。在将目标元素移出之后,该目标元素所属双向链表的末尾元素相应发生变化,进而需要对索引表中关联的该目标元素所属双向链表的末尾元素的地址进行更新。具体地,在将目标元素移出之后,根据当前目标元素所属双向链表的当前末尾元素的地址更新索引表,即,将目标元素所属双向链表的当前末尾元素的地址确定为索引表中关联的该目标元素所属双向链表的末尾元素的地址。
示例地,假设所确定的本次要移出的目标元素为图6b中存储在双向链表P0中的元素P01。在将该元素P01从双向链表P0中移出之后,图6b中示出的四个双向链表如图8所示。在图8中,双向链表P0的末尾元素变为元素P02,相应地,需将表2中的索引表中的双向链表P0的末尾元素的地址更新为元素P02的地址,若元素P02的地址为0xa002,则更新后的索引表如表4所示。
表4
双向链表的标识 | P0 | P1 | P2 | P3 |
头指针地址 | 0x0000 | 0x0001 | 0x0002 | 0x0003 |
末尾元素地址 | 0xa002 | 0xb001 | 0xc001 | 0xd001 |
依次类推,在将双向链表中的最后一个元素移出之后,该双向链表中不存在元素,此时,索引表中该双向链表的末尾元素地址为NULL。如此,在该方式中,还可以根据索引表中关联的各双向链表的末尾元素地址是否为NULL,确定该双向链表是否为空双向链表。具体地,将末尾元素地址为非空的双向链表确定为非空双向链表,将末尾元素地址为NULL的双向链表确定为空双向链表。例如,如表3所示,由于表3中双向链表P0、双向链表P2和双向链表P3的末尾元素地址为NULL,因此,将双向链表P0、双向链表P2和双向链表P3确定为空双向链表,将双向链表P1确定为非空双向链表。
需要说明的是,配置有如上所述的索引表的情况下,还可以基于双向链表的当前末尾元素的地址,直接确定该双向链表的当前末尾元素,如此,无需依次遍历双向链表中存储的所有元素,即可快速地确定出当前末尾元素,进一步提升了元素移出的效率。
此外,在本公开中,还可以设定栈顶指针的当前地址为当前优先级最高的非空双向链表的头指针地址,因此,可以将头指针地址与栈顶指针的当前地址一致的双向链表确定为当前优先级最高的非空双向链表。
在该情况下,在将目标元素从所属双向链表中移出之后,若目标元素所属双向链表当前为空双向链表,则将栈顶指针的当前地址更新为当前优先级最高的非空双向链表的头指针地址,以使栈顶指针的当前地址始终与当前优先级最高的非空双向链表的头指针地址保持一致。
示例地,假设本次要移出的目标元素为图8中的元素P02,此时栈顶指针的当前地址与双向链表P0的头指针地址一致,即栈顶指针的当前地址为0x0000。在将元素P02移出之后,图8中示出的四个双向链表如图9所示。由于在图9示出的双向链表P0为空双向链表,因此,需要更新栈顶指针的当前地址。具体地,将双向链表P1的头指针地址更新为栈顶指针的当前地址,即,栈顶指针的当前地址为0x0001,以使栈顶指针的当前地址始终与当前优先级最高的非空双向链表的头指针地址保持一致。这样,即可根据栈顶指针的当前地址确定当前优先级最高的非空双向链表。
采用上述技术方案,由于栈顶指针的当前地址始终与当前优先级最高的非空双向链表的头指针地址一致,所以,可以直接根据栈顶指针的当前地址快速确定当前优先级最高的非空双向链表,进而可快速确定出本次要移出的目标元素,进一步提升了元素移出的效率和信息处理效率。
基于同一发明构思,本公开还提供一种信息处理装置。图10是根据一示例性实施例示出的一种信息处理装置的框图。如图10所示,该信息处理装置100可以包括:
第一确定模块1001,用于根据各双向链表的优先级和所述双向链表的当前末尾元素,确定本次要移出的目标元素,其中,每一所述双向链表分别具有不同的优先级,所述双向链表中存储有具有对应优先级的元素;
移出模块1002,用于将所述目标元素从所属双向链表中移出,以对所述目标元素进行处理。
可选地,所述装置还可以包括:
第一确定模块,用于确定与待入队元素的优先级对应的目标双向链表;
插入模块,用于将所述待入队元素插入至所述目标双向链表。
可选地,所述插入模块,可以用于将所述待入队元素插入至所述目标双向链表的头指针的后一位。
可选地,所述第一确定模块1001,可以用于将当前优先级最高的非空双向链表中的当前末尾元素确定为所述目标元素。
可选地,若一双向链表的当前末尾元素的前驱元素的地址不为该双向链表的头指针地址,则移出该当前末尾元素之后的该双向链表为非空双向链表;若一双向链表的当前末尾元素的前驱元素的地址为该双向链表的头指针地址,则移出该当前末尾元素之后的该双向链表为空双向链表。
可选地,将头指针地址与栈顶指针的当前地址一致的双向链表确定为当前优先级最高的非空双向链表;所述装置还可以包括:
第一更新模块,用于若所述目标元素所属双向链表当前为空双向链表,则将所述栈顶指针的当前地址更新为当前优先级最高的非空双向链表的头指针地址。
可选地,每一所述双向链表的标识、头指针地址和末尾元素地址被关联存储在索引表中;所述装置还可以包括:
第二更新模块,用于根据所述目标元素所属双向链表的当前末尾元素的地址更新所述索引表。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图11是根据一示例性实施例示出的一种电子设备1100的框图。如图11所示,该电子设备1100可以包括:处理器1101,存储器1102。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器1101用于控制该电子设备1100的整体操作,以完成上述的信息处理方法中的全部或部分步骤。存储器1102用于存储各种类型的数据以支持在该电子设备1100的操作,这些数据例如可以包括用于在该电子设备1100上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器1102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件1103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1102或通过通信组件1105发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口1104为处理器1101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1105用于该电子设备1100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件1105可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备1100可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的信息处理方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的信息处理方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1102,上述程序指令可由电子设备1100的处理器1101执行以完成上述的信息处理方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的信息处理方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (6)
1.一种信息处理方法,其特征在于,所述方法包括:
根据各双向链表的优先级和所述双向链表的当前末尾元素,确定本次要移出的目标元素,其中,每一所述双向链表分别具有不同的优先级,所述双向链表中存储有具有对应优先级的元素;
将所述目标元素从所属双向链表中移出,以对所述目标元素进行处理;
所述方法还包括:
确定与待入队元素的优先级对应的目标双向链表;
将所述待入队元素插入至所述目标双向链表的头指针的后一位,所述头指针基于索引表中的头指针地址确定,所述索引表中关联存储有每一所述双向链表的标识、所述头指针地址和末尾元素地址;
所述根据各双向链表的优先级和所述双向链表的当前末尾元素,确定本次要移出的目标元素,包括:
将当前优先级最高的非空双向链表中的当前末尾元素确定为所述目标元素,所述当前优先级最高的非空双向链表是所述头指针地址与栈顶指针的当前地址一致的双向链表。
2.根据权利要求1所述的方法,其特征在于,若一双向链表的当前末尾元素的前驱元素的地址不为该双向链表的头指针地址,则移出该当前末尾元素之后的该双向链表为非空双向链表;若一双向链表的当前末尾元素的前驱元素的地址为该双向链表的头指针地址,则移出该当前末尾元素之后的该双向链表为空双向链表。
3.根据权利要求1所述的方法,其特征在于,在将所述目标元素从所属双向链表中移出之后,所述方法还包括:
若所述目标元素所属双向链表当前为空双向链表,则将所述栈顶指针的当前地址更新为当前优先级最高的非空双向链表的头指针地址。
4.根据权利要求1-3中任一项所述的方法,其特征在于,
在将所述目标元素从所属双向链表中移出之后,所述方法还包括:
根据所述目标元素所属双向链表的当前末尾元素的地址更新所述索引表。
5.一种信息处理装置,其特征在于,所述装置包括:
第一确定模块,用于根据各双向链表的优先级和所述双向链表的当前末尾元素,确定本次要移出的目标元素,其中,每一所述双向链表分别具有不同的优先级,所述双向链表中存储有具有对应优先级的元素;
移出模块,用于将所述目标元素从所属双向链表中移出,以对所述目标元素进行处理;
所述第一确定模块还用于确定与待入队元素的优先级对应的目标双向链表;
所述装置还包括插入模块,用于将所述待入队元素插入至所述目标双向链表的头指针的后一位,所述头指针基于索引表中的头指针地址确定,所述索引表中关联存储有每一所述双向链表的标识、所述头指针地址和末尾元素地址;
所述第一确定模块用于将当前优先级最高的非空双向链表中的当前末尾元素确定为所述目标元素,所述当前优先级最高的非空双向链表是所述头指针地址与栈顶指针的当前地址一致的双向链表。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911276704.0A CN111124355B (zh) | 2019-12-12 | 2019-12-12 | 信息处理方法、装置、可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911276704.0A CN111124355B (zh) | 2019-12-12 | 2019-12-12 | 信息处理方法、装置、可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124355A CN111124355A (zh) | 2020-05-08 |
CN111124355B true CN111124355B (zh) | 2023-04-07 |
Family
ID=70498547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911276704.0A Active CN111124355B (zh) | 2019-12-12 | 2019-12-12 | 信息处理方法、装置、可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124355B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338499B (zh) * | 2021-12-29 | 2024-05-14 | 中国电信股份有限公司 | 数据传输方法、其装置以及电子设备 |
CN115934384B (zh) * | 2023-01-16 | 2023-06-09 | 云账户技术(天津)有限公司 | 消息队列的实现方法、系统、电子设备和可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872938A (en) * | 1996-06-28 | 1999-02-16 | International Business Machines Corp. | Service priority queue implemented with ordered sub-queues and sub-queue pointers pointing to last entries in respective sub-queues |
US6865648B1 (en) * | 2002-06-24 | 2005-03-08 | Emc Corporation | Data structure for write pending |
CN101551736A (zh) * | 2009-05-20 | 2009-10-07 | 杭州华三通信技术有限公司 | 基于地址指针链表的缓存管理装置和方法 |
US8126927B1 (en) * | 2008-06-06 | 2012-02-28 | Amdocs Software Systems Limited | Data structure, method, and computer program for providing a linked list in a first dimension and a plurality of linked lists in a second dimension |
WO2016179968A1 (zh) * | 2015-05-13 | 2016-11-17 | 深圳市中兴微电子技术有限公司 | 一种队列管理方法、装置及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249352B2 (en) * | 2002-08-22 | 2007-07-24 | International Business Machines Corporation | Apparatus and method for removing elements from a linked list |
CN100511152C (zh) * | 2005-11-29 | 2009-07-08 | 腾讯科技(深圳)有限公司 | 一种优先级队列的管理方法 |
CN101014176A (zh) * | 2007-02-05 | 2007-08-08 | 浪潮乐金信息系统有限公司 | 通信网管系统中一种基于优先级时间链表的采集调度方法 |
CN101902487B (zh) * | 2009-05-26 | 2013-03-20 | 中兴通讯股份有限公司 | 基于链表的队列调度方法与装置 |
US9246836B2 (en) * | 2012-08-30 | 2016-01-26 | Sybase, Inc. | Single producer, single consumer lockless FIFO/LIFO queue |
CN104965686B (zh) * | 2015-07-20 | 2019-01-22 | 北京金山安全软件有限公司 | 一种优先级队列设计方法及优先级队列设计装置 |
-
2019
- 2019-12-12 CN CN201911276704.0A patent/CN111124355B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872938A (en) * | 1996-06-28 | 1999-02-16 | International Business Machines Corp. | Service priority queue implemented with ordered sub-queues and sub-queue pointers pointing to last entries in respective sub-queues |
US6865648B1 (en) * | 2002-06-24 | 2005-03-08 | Emc Corporation | Data structure for write pending |
US8126927B1 (en) * | 2008-06-06 | 2012-02-28 | Amdocs Software Systems Limited | Data structure, method, and computer program for providing a linked list in a first dimension and a plurality of linked lists in a second dimension |
CN101551736A (zh) * | 2009-05-20 | 2009-10-07 | 杭州华三通信技术有限公司 | 基于地址指针链表的缓存管理装置和方法 |
WO2016179968A1 (zh) * | 2015-05-13 | 2016-11-17 | 深圳市中兴微电子技术有限公司 | 一种队列管理方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
王金翔 ; .数据结构中线性链表的剖析.大众科学(科学研究与实践).2007,(第20期),50. * |
Also Published As
Publication number | Publication date |
---|---|
CN111124355A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102376713B1 (ko) | 복합 파티션 함수 제공 기법 | |
US9497288B2 (en) | Subscriber based priority of messages in a publisher-subscriber domain | |
CN111124355B (zh) | 信息处理方法、装置、可读存储介质及电子设备 | |
CN107402950B (zh) | 基于分库分表的文件处理方法和装置 | |
CN112148644B (zh) | 处理输入/输出请求的方法、装置和计算机程序产品 | |
CN111177182B (zh) | 数据查询方法和装置、存储介质和电子设备 | |
CN110413210B (zh) | 用于处理数据的方法、设备和计算机程序产品 | |
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
CN112035529A (zh) | 缓存方法、装置、电子设备及计算机可读存储介质 | |
CN114218135A (zh) | 一种基于Redis缓存的源端流控方法及系统 | |
CN112418389A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN106664637B (zh) | 路由信息配置方法及装置 | |
KR101674294B1 (ko) | 임의 접근 및 상태 접근이 가능한 자료구조 운용장치 및 그 운용 방법 | |
CN113439418A (zh) | 更改资源状态的方法、系统、终端及存储介质 | |
CN113556414B (zh) | 用于网络间通信的方法、网关设备和存储介质 | |
CN114780346A (zh) | 获取程序卡顿信息的方法、装置、存储介质和电子设备 | |
CN109871277B (zh) | 进程间多请求管理方法、装置、终端设备及可读存储介质 | |
CN102325091B (zh) | 内存释放方法和路由系统 | |
US20140325152A1 (en) | Quadtree based data management for memory | |
JP6835758B2 (ja) | フロー制御装置および方法 | |
CN116800692B (zh) | 活动队列的调度方法、装置及存储介质 | |
CN116820344B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN112527896B (zh) | 区块链账本数据的处理方法、装置、存储介质及电子设备 | |
CN113779082B (zh) | 一种更新数据的方法和装置 | |
CN111142897B (zh) | 多应用程序的计数方法、计数装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |