数据结构nextval数组怎么求数组存储地址的问题

一、next数组(简单易懂)

next函数值仅取决於模式串本身与主串无关

next数组的生成这里有两种方式:
我们要生成这个模式串的next数组,那么首先第一件事就是为这些字符标号
  1. 前缀和後缀进行比较,如果前缀和后缀没有相同前缀则为0+1,如果相同则相同的字符个数+1;
  2. 前缀取s[n]之前字符的n-2位,后缀取s[n]之前n-1字符后面的后n-2位
2.next[3]:如上,序号j[3]对应的模式串s[3]那么我们就看模式串s[3]前面的

最终生成的next字符串为:

方法二 字符串下标匹配

5.next[7]:到这就有问题了,前一位s[6]所对应嘚next下标为4所以,s[6]和s[4]对比不相同!那么,继续看s[4]所对应的next下标 为2,s[6]不动永远作为对比方,与s[4]对应next下标数字为序号再次进行对比以此类推,s[2]=b,

二、nextval(有手就行)

这里我们只介绍最简单的生成nextval数组的方法nextval数组第一个字符永远为0。
既然我们上面生成了next数组nextval数组直接通过next數组便可生成。
若不同填入next的值;若相同,填入该值对应的序号的nextval.

我要回帖

更多关于 数据结构数组存储 的文章

 

随机推荐