C++ 數(shù)據(jù)結(jié)構(gòu)之kmp算法中的求Next()函數(shù)的算法
更新時間:2017年06月25日 11:34:50 投稿:lqh
這篇文章主要介紹了C++ 數(shù)據(jù)結(jié)構(gòu)之kmp算法中的求Next()函數(shù)的算法的相關資料,需要的朋友可以參考下
C++ 數(shù)據(jù)結(jié)構(gòu)之kmp算法中的求Next()函數(shù)的算法
實例代碼:
#include <iostream>
using namespace std;
void preKmp(char *c, int m, int Next[])
{
int i=1,j=-1;
Next[0]=-2;
while(i<m)
{
if(j==-2)
{
Next[i]=-1;
i++;
j=-1;
}
++j;
if(i==m)
return;
if(c[i]==c[j])
{
Next[i]=j;
++i;
}
else if(j==0)
{
j=-2;
}
else j=Next[j-1];
}
}
int main()
{
cout << "Hello world!" << endl;
char pat[12]="actabactace";
int next[11];
preKmp(pat,11,next);
for(int i=0;i<11;i++)
cout<<"next["<<i<<"]="<<next[i]<<endl;
return 0;
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章:
- C++數(shù)據(jù)結(jié)構(gòu)與算法之哈夫曼樹的實現(xiàn)方法
- C++數(shù)據(jù)結(jié)構(gòu)與算法之反轉(zhuǎn)鏈表的方法詳解
- C++數(shù)據(jù)結(jié)構(gòu)與算法之雙緩存隊列實現(xiàn)方法詳解
- C++ 數(shù)據(jù)結(jié)構(gòu)之水洼的數(shù)量算法
- C++數(shù)據(jù)結(jié)構(gòu)與算法之判斷一個鏈表是否為回文結(jié)構(gòu)的方法
- C++ 冒泡排序數(shù)據(jù)結(jié)構(gòu)、算法及改進算法
- C++數(shù)據(jù)結(jié)構(gòu)與算法的基礎知識和經(jīng)典算法匯總
相關文章
VC++6.0實現(xiàn)直線掃描轉(zhuǎn)換的圖文教程
這篇文章主要給大家介紹了關于VC++6.0實現(xiàn)直線掃描轉(zhuǎn)換的相關資料,文中通過圖文將實現(xiàn)的步驟一步步介紹的非常詳細,對大家學習或者使用VC++6.0具有一定的參考學習價值,需要的朋友可以參考下2023-01-01
c語言實現(xiàn)數(shù)組循環(huán)左移m位
這篇文章主要介紹了c語言實現(xiàn)數(shù)組循環(huán)左移m位,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
C語言數(shù)據(jù)結(jié)構(gòu)創(chuàng)建及遍歷十字鏈表
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)十字鏈表的創(chuàng)建及遍歷,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2021-10-10

