資料結構例程 串的模式匹配(KMP演算法)

2021-07-05 15:31:17 字數 863 閱讀 7268

本文針對資料結構基礎系列網路課程(4):串中第5課時串的模式匹配(kmp演算法)。

kmp演算法:

#include 

#include "sqstring.h"

void getnext(sqstring t,int

next) /*由模式串t求出next值*/

else

k=next[k];

}}int kmpindex(sqstring s,sqstring t) /*kmp演算法*/

else j=next[j]; /*i不變,j後退*/

}if (j>=t.length)

return(i-t.length); /*返回匹配模式串的首字元下標*/

else

return(-1); /*返回不匹配標誌*/

}int main()

修正後的kmp演算法

#include 

#include "sqstring.h"

void getnextval(sqstring t,int nextval) //由模式串t求出nextval值

else k=nextval[k];

}}int kmpindex1(sqstring s,sqstring t) //修正的kmp演算法

else

j=nextval[j];

}if (j>=t.length)

return(i-t.length);

else

return(-1);

}int main()

資料結構 串的模式匹配 KMP演算法

目錄概念 簡述kmp演算法原理 計算next陣列 kmp演算法 測試 改進kmp演算法簡介 從s中匹配t串,在bf演算法中,通過指標回溯不斷進行匹配,其思想是窮舉。效率很低,但有些串有一定的規律,不需要回溯s串的指標,這就是kmp演算法。比如 s aaaaaab t aaab 在進行比較時,如果按照...

大話資料結構之串與模式匹配KMP

堅持用blog記錄學習之路,加油 2019.4.29 陳百強 偏偏喜歡你 typedef char string maxsize 1 0號單元存放串的長度 init status strassign string t,char chars strcopy status strcopy string ...

資料結構 串的樸素模式和KMP匹配演算法

一 樸素模式 假設我們要從主串s goodgoogle 中找到子串t google 的位置,步驟如下 i表示主串的當前位置下標,j表示子串的當前位置下標,如上圖在第一輪比較 i 1開始 中j 4和i 4的位置不匹配,接下來就要指標回退,從i 2開始比較,如下 如此反覆直到比較到 i 主串長度 子串長...