一种链表的生成方法、装置、终端设备及存储介质制造方法及图纸

技术编号:37326028 阅读:27 留言:0更新日期:2023-04-21 23:04
本申请实施例适用于计算机技术领域,提供了一种链表的生成方法、装置、终端设备及存储介质,所述方法包括:根据原始字符串中各个第一后缀的后缀位置生成第一链表,并根据所述第一链表生成多个子链表;所述第一链表中包括多个存储在后缀位置的第一后缀;所述第一后缀为所述原始字符串中字符类型为第一类型的字符对应的后缀;所述第一链表是由多个第一后缀基于所述第一后缀的字典顺序链接而成;调用至少N条并行线程读取所述子链表内的至少N个第二后缀,确定各个所述第二后缀的前继元组,并根据所述前继元组依次连接各个所述第二后缀,得到第二链表;根据所述第二链表生成后缀链表。根据本实施例的方法生成后缀链表,可以提高后缀链表的生成效率。缀链表的生成效率。缀链表的生成效率。

【技术实现步骤摘要】
一种链表的生成方法、装置、终端设备及存储介质


[0001]本申请实施例属于计算机
,特别是涉及一种链表的生成方法、装置、终端设备及存储介质。

技术介绍

[0002]后缀链表,是一种按照字符串后缀的顺序信息链接起来的后缀单链表,后缀链表中的每一个后缀都指向比它大或者比它小的下一个后缀的位置。由于后缀链表是一种可以基于后缀进行全文索引的数据结构,因此后缀链表常被应用于数据压缩领域。现有技术中,常采用归纳排序的方法对字符串的多个后缀进行排序并生成后缀链表,但当字符串长度较大时,字符串中的后缀数量更为庞大,使用现有技术中的归纳排序方法构建后缀链表需要耗费大量时间。

技术实现思路

[0003]有鉴于此,本申请实施例提供了一种链表的生成方法,用以提高后缀链表的生成效率。
[0004]本申请实施例的第一方面提供了一种链表的生成方法,包括:根据原始字符串中各个第一后缀的后缀位置生成第一链表,并根据所述第一链表生成多个子链表;所述子链表包括多个第二后缀;所述第二后缀为所述原始字符串中字符类型为与第一类型不同的字符对应的后缀;所述第一本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种链表的生成方法,其特征在于,包括:根据原始字符串中各个第一后缀的后缀位置生成第一链表,并根据所述第一链表生成多个子链表;所述子链表包括多个第二后缀;所述第二后缀为所述原始字符串中字符类型为与第一类型不同的字符对应的后缀;所述第一链表中包括多个存储在后缀位置的第一后缀;所述第一后缀为所述原始字符串中字符类型为第一类型的字符对应的后缀;所述第一链表是由多个第一后缀基于所述第一后缀的字典顺序链接而成;所述后缀位置由所述后缀的后缀首字符在原始字符串中的位置确定;调用至少N条并行线程读取所述子链表内的至少N个第二后缀,确定各个所述第二后缀的前继元组,并根据所述前继元组依次连接各个所述第二后缀,得到第二链表;所述N为大于2的正整数;根据所述第二链表生成后缀链表。2.根据权利要求1所述的方法,其特征在于,所述多个子链表至少包括K条子链表,所述K为大于或等于3的正整数,所述至少N条并行线程中包含有至少一对并行线程对;所述并行线程对内包含读取线程以及链接线程;所述读取线程的执行时序早于所述链接线程的执行时序;所述调用至少N条并行线程读取所述子链表内的至少N个第二后缀,确定各个所述第二后缀的所述前继元组,并根据所述前继元组依次连接各个所述第二后缀,得到第二链表,包括:调用所述读取线程从所述原始字符串中获取第K条子链表中的各个所述第二后缀相应的多个前继后缀,基于多个所述前继后缀生成多个第一前继元组,并将多个所述第一前继元组写入第一读数组中;所述前继后缀为后缀首字符为所述第二后缀的前继字符的后缀;当所述第K条子链表进入归纳线程时,所述第一前继元组用于计算所述第一前继元组对应的所述第二后缀的链接位置;同时,调用归纳线程从第二读数组中读取第K

1条子链表对应的多个第二前继元组,并基于多个所述第二前继元组计算各个第二前继元组相应的链接位置,基于所述链接位置生成第一链接元组,将多个所述第一链接元组写入第一写数组中;当所述第K

1条子链表进入链接线程时,所述第一链接元组用于对所述第一链接元组对应的各个所述第二后缀进行链接;同时,调用所述链接线程从第二写数组中依次读取第K

2条子链表对应的多个第二链接元组,根据所述第二链接元组确定各个所述第二后缀的链接位置,并基于所述链接位置对所述第二后缀进行链接以生成所述第二链表。3.根据权利要求2所述的方法,其特征在于,所述子链表包括多个预设长度的后缀段,所述后缀段中包括多个所述第二后缀,所述读取线程中包括多个读取子线程;所述调用所述读取线程从所述原始字符串中获取第K条子链表中的各个所述第二后缀相应的多个前继后缀,基于多个所述前继后缀生成多个第一前继元组,并将多个所述第一前继元组写入第一读数组中,包括:将多个所述后缀段平均分配给所述多个读取子线程;同时调用多个所述读取子线程确定所述读取子线程分配的后缀段内各个所述第二后缀的前继后缀;所述前继后缀是根据所述第二后缀在所述原始字符串中的位置确定的。4.根据权利要求2所述的方法,其特征在于,所述子链表是根据预先设定的子链表长度
对桶链表进行划分后得到的;所述桶链表是由多个所述后缀首字符相同的所述第二后缀组成的链表;所述调用归纳线程从第二读数组中依次读取第K

1条子链表对应的多个第二前继元组,并基于多个所述第二前继元组计算各个第二前继元组相应的链接位置...

【专利技术属性】
技术研发人员:韩凌波冯天心
申请(专利权)人:广东海洋大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1