KMP算法(求模式串的next及nextval值)

/*
 伪C描述,运用了C++中引用,便与实现相关操作,算法主要思想(见严蔚敏数据结构83)
*/
void Get_Next(SString &T,int next[]){
         /*
    求模式串T的next函数值并存入数组next
        */
         i=1;
         next[i]=0;
         j=0;
         while(i
              if(j==0||T[i]==T[j]){
                i++;
                j++;
                next[i]=j;
              }
             else
               j=next[j];
        }
}
 
void Get_NextVal(SString &T,int nextval[]){
       /*
        求模式串T的nextval函数值并存入数组nextval
       */
       i=1;
       nextval[i]=0;
       j=0;
       while(i
            if(j==0||T[i]==T[j]){
               i++;
               j++;
               if(T[i]==T[j])
                  nextval[i]=nextval[j];
               else
                  nextval[i]=j;
            }
          else
             j=nextval[j];
       }
}
 

你可能感兴趣的:(KMP算法(求模式串的next及nextval值))